Удалить два последним слова из строки, в которой слова разделяются одним или несколькими пробелами - C (СИ) (77854)
Формулировка задачи:
работа со строками!
задача: удалить два последним слова из строки, в которой слова разделяются одним или несколькими пробелами
я писала программу для слов разделяющихся одним пробелом
Код C
как можно переписать эту задачу с функцией strtok()? или еще как нибудь, подскажите пожалуста
#include <stdio.h> #include <string.h> int main(void) { char *s; char delimiter = ' '; int i; printf ("vvedite stroku: "); gets(s); // считываем введенную строку, заносим в string {for (i = strlen(s); *(s+i) != delimiter && i; i--); s[i]='\0'; } {for (i = strlen(s); *(s+i) != delimiter && i; i--); s[i]='\0'; } printf ("stroka bez dvuh slov "); printf("%s\n", s); // выводим полученную строку return 0; getch(); }
Решение задачи: «Удалить два последним слова из строки, в которой слова разделяются одним или несколькими пробелами»
textual
Листинг программы
short count = 0; char delimiter = ' '; char *c; for (c = s + strlen(s)-2; c != s; c--) if(*c == delimiter && *(c+1) != delimiter) if(++count == 2) break; *c = '\0';
Объяснение кода листинга программы
- Объявляются переменные: — count (количество слов, которые необходимо удалить) — delimiter (разделитель, в данном случае пробел) — c (указатель на текущий символ в строке)
- Начинается цикл, который проходит по строке в обратном направлении
- В каждой итерации проверяется текущий символ и следующий за ним. Если текущий символ является разделителем и следующий за ним символ не является разделителем, то увеличивается счетчик words_to_delete и происходит переход к следующей итерации.
- Если количество слов, которые необходимо удалить, равно 2, то цикл прерывается.
- В конце цикла, последнему символу в строке присваивается значение разделителя, чтобы
закрыть
строку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д