Pers.narod.ru. Алгоритмы. Упражнения на разбор по словам с функцией token |
В строке 2-е и последнее слова записать наоборот, в конце предложения - точка.
#include <conio.h> #include <stdio.h> #include <string.h> void main () { char *s="This is a test message for my cool program"; //задали строку char *separators="\t "; //задали возможные разделители слов char copy[80]; //задали буфер для строки результата char *token = strtok (s, separators); //функция strtok умеет делать разбор на слова //- нашли первое слово char *pred; //указатель на предыдущее слово, найденное strtok clrscr(); memset (copy,'\0',80); //буфер заполнили нулями int i=1; printf("\nword %d = %s\n", i, token); while (token != NULL) { //пока еще есть слова i++; //счетчик слов +1 pred = token; //запоминаем пред. слово token = strtok (NULL, separators); /* next word */ if (i==2) { strrev (token); } //выделяем 1-е if (token == NULL) { strrev (pred); } //и последнее слова printf("\nword %d = %s\n", i, pred); //печатаем слова strcat (copy,pred); //переписываем слово в буфер strcat (copy," "); //и добавляем после него пробел } copy[strlen(copy)-1]='.'; //точка в конце предложения puts (copy); }
В тексте содержимое всех слов длиннее 2 символов заменить последовательностью из заданного символа, оставив без изменения только крайние слова.
#include <conio.h> #include <stdio.h> #include <string.h> void main () { char *s="This is a test message for my cool program tt"; char *separators="\t "; char copy[80]; char c='!'; char *cstr=" "; //в строку cstr запишем символ c, //чтобы использовать вызов strcat char *token = strtok (s, separators); char *pred; clrscr(); memset (copy,'\0',80); cstr[0]=c; int i=1; printf("\nword %d = %s\n", i, token); while (token != NULL) { i++; pred = token; token = strtok (NULL, separators); printf("\nword %d = %s\n", i, pred); if (i==2 || token == NULL || strlen(pred)<3) { //если первое или последнее слово или длина слова //меньше 3 букв, то без изменения strcat (copy,pred); } else { //иначе пишем вместо слова нужное число символов c for (i=0; i<strlen(pred); i++) strcat (copy,cstr); } strcat (copy," "); } copy[strlen(copy)-1]='.'; puts (copy); }
гостевая; E-mail |