Удалить первое слово и все такие же слова в строке - C (СИ)
Формулировка задачи:
Используя командную строку ввести строку. Удалить первое слово и все такие же слова. Слова разделены одним пробелом, строка начинается и заканчивается символом отличным от пробела.
Помогите пожалуйста, экзаменационная задача, а я вообще не представляю как это реализовать...
Решение задачи: «Удалить первое слово и все такие же слова в строке»
textual
Листинг программы
#include <stdio.h> #include <string.h> #define DELIM " \t\n" int main(void) { char buf[BUFSIZ], * first, * current; while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' && printf("Result: ") ) { if ( ! ( first = strtok(buf, DELIM) ) ) { printf("Empty string!\n"); continue; } while ( current = strtok(NULL, DELIM) ) if ( strcmp(first, current) ) printf("%s ", current); printf("\n"); } return 0; }
Объяснение кода листинга программы
В этом коде используется стандартная библиотека языка C, функции которой предназначены для работы со строками и вводом-выводом.
- #include
Включает в себя функции для ввода-вывода. - #include
Включает в себя функции для работы со строками. - #define DELIM
\t\n
Определяет разделитель, который разделяет слова в строке. В данном случае это пробел, табуляция и перевод строки. - int main(void) Функция main() является точкой входа в программу.
- char buf[BUFSIZ], first, current; Объявляет переменные buf, first и current.
- buf - буфер для хранения строки, которую вводит пользователь.
- first - указатель на первое слово в строке.
- current - указатель на текущее слово в строке.
- *while ( printf(
String:
) && fgets(buf, BUFSIZ, stdin) && buf != '\n' && printf(Result:
) )** Организует цикл, который будет выполняться до тех пор, пока пользователь не введет пустую строку. - if ( ! ( first = strtok(buf, DELIM) ) ) Проверяет, есть ли в строке первое слово. Если его нет, выводит сообщение об ошибке и продолжает цикл.
- while ( current = strtok(NULL, DELIM) ) Организует внутренний цикл, который будет выполняться до тех пор, пока не будут обработаны все слова в строке.
- if ( strcmp(first, current) ) Сравнивает текущее слово с первым словом. Если они различаются, выводит текущее слово.
- printf(
\n
); Выводит перевод строки после вывода всех слов. - return 0; Завершает работу программы. В результате выполнения программы на экран будет выведена строка, в которой удалены все вхождения первого слова.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д