Удалить первое слово и все такие же слова в строке - 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, функции которой предназначены для работы со строками и вводом-выводом.

  1. #include Включает в себя функции для ввода-вывода.
  2. #include Включает в себя функции для работы со строками.
  3. #define DELIM \t\n Определяет разделитель, который разделяет слова в строке. В данном случае это пробел, табуляция и перевод строки.
  4. int main(void) Функция main() является точкой входа в программу.
  5. char buf[BUFSIZ], first, current; Объявляет переменные buf, first и current.
    • buf - буфер для хранения строки, которую вводит пользователь.
    • first - указатель на первое слово в строке.
    • current - указатель на текущее слово в строке.
  6. *while ( printf(String:) && fgets(buf, BUFSIZ, stdin) && buf != '\n' && printf(Result:) )** Организует цикл, который будет выполняться до тех пор, пока пользователь не введет пустую строку.
  7. if ( ! ( first = strtok(buf, DELIM) ) ) Проверяет, есть ли в строке первое слово. Если его нет, выводит сообщение об ошибке и продолжает цикл.
  8. while ( current = strtok(NULL, DELIM) ) Организует внутренний цикл, который будет выполняться до тех пор, пока не будут обработаны все слова в строке.
  9. if ( strcmp(first, current) ) Сравнивает текущее слово с первым словом. Если они различаются, выводит текущее слово.
  10. printf(\n); Выводит перевод строки после вывода всех слов.
  11. return 0; Завершает работу программы. В результате выполнения программы на экран будет выведена строка, в которой удалены все вхождения первого слова.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы