zhukov000

String

Jan 20th, 2020
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.47 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. char words[30][12];
  5.  
  6. int main()
  7. {
  8.   int str_size = 1000;
  9.   char * str = (char *) calloc(str_size, sizeof(char));
  10.   int len_str = 0;
  11.   // 1) считываем строку
  12.   while(1)
  13.   {
  14.     str[len_str] = getchar();
  15.     ++len_str;
  16.     if (len_str == str_size-1)
  17.     {
  18.       str_size += 500;
  19.       str = realloc(str, str_size);
  20.     }
  21.     if (str[len_str-1] == '.') // если ".", то закончить
  22.     {
  23.       str[len_str] = 0; // отмечаем, что строка окончилась
  24.       break;
  25.     }
  26.   }
  27.  
  28.   int cnt = 0, j = 0; // cnt - количество слов, j - длина текущего слова
  29.   for(int i=0; i < len_str; ++i)
  30.   {
  31.     if (str[i] == ' ' && i > 0 && str[i-1] != ' ')
  32.     {
  33.       cnt ++;
  34.       j = 0;
  35.     }
  36.     else
  37.     {
  38.       if (str[i] != ' ')
  39.       {
  40.         words[cnt][j] = str[i];
  41.         ++j;
  42.       }
  43.     }
  44.   }
  45.  
  46.   // вывод по словам
  47.   printf("Words:\n");
  48.   for(int i=0; i<cnt; ++i)
  49.   {
  50.     if ( strcmp(words[i], words[cnt]) ) // strcmp = 0, если строки равны
  51.     {
  52.       int m = strlen(words[i]); // длина строки
  53.  
  54.       char first = words[i][0];
  55.       for(int j=0; j<m-1; ++j)
  56.         words[i][j] = words[i][j+1];
  57.       words[i][m-1] = first;
  58.  
  59.       printf("%d %s\n", m, words[i]);
  60.     }
  61.   }
  62.  
  63.   // вывод исходной строки
  64.   printf("\nSource string: %s\n\n", str);
  65.   free(str);
  66.   return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment