Advertisement
BlueBear

stringy.c

Mar 19th, 2013
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.62 KB | None | 0 0
  1. /*
  2.     xnagyl2.c
  3.     ZPPLS13
  4. */
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8.  
  9. #define MAX_STR 50
  10.  
  11. void strinsert(char *s, int d, char *s2, int i);
  12. void strdelete(char *s, int i, int n);
  13.  
  14.  
  15. int main()
  16. {
  17.     char s[MAX_STR] = "";
  18.     char s2[MAX_STR] = "";
  19.     char vyber;
  20.     int i, n, d, len;
  21.  
  22.     while(vyber = getchar())
  23.     {
  24.         if(vyber == 'N')
  25.         {
  26.             scanf("%s", &s);
  27.             printf("%s",s);
  28.         }
  29.         else if(vyber == 'V')
  30.         {
  31.             scanf("%d %s", &i, &s2);
  32.             len = strlen(s2);
  33.             strinsert(s, len, s2, i);
  34.             printf("%s",s);
  35.         }
  36.         else if(vyber == 'Z')
  37.         {
  38.             scanf("%d %d", &i, &n);
  39.             strdelete(s, i, n);
  40.             printf("%s\n",s);
  41.         }
  42.         else if(vyber == 'K')
  43.         {
  44.             break;
  45.         }
  46.     }
  47.     return 0;
  48. }
  49.  
  50.  
  51. void strinsert(char *s, int d, char *s2, int i)
  52. {
  53.     int len;
  54.     char *str;
  55.     str = (char *)malloc(d * sizeof(char));
  56.     len = strlen(s);
  57.     if(len == 0 || MAX_STR < len + d)
  58.     {
  59.         printf("do retazca nie je mozne vlozit podretazec od zvolenej pozicie\n");
  60.         return;
  61.     }
  62.     strncpy(str, s, i);
  63.     str[i] = '\0';
  64.     strdelete(s, 0, i);
  65.     strcat(str, s2);
  66.     strcat(str, s);
  67.     strcpy(s, str);
  68. }
  69.  
  70. void strdelete(char *s, int i, int n)
  71. {
  72.     int j;
  73.     int len;
  74.     len = strlen(s);
  75.     if(i+n > len || len == 0)
  76.     {
  77.         printf("z retazca nie je mozne vymazat znaky\n");
  78.         return;
  79.     }
  80.     for(j=i; j<len; j++)
  81.     {
  82.         s[j] = s[j+n];
  83.     }
  84.  
  85.     s[len+1-n] = '\0';
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement