Найти все уникальные слова. Написать комментарии к коду - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть готовый код к задаче: Дана строка s, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв. Между соседними словами стоит запятая, за последним словом - точка. Напечатать все слова, которые встречаются в строке только по одному разу. _______________ Помогите разобраться в коде, не хочу тупо сдать лабу, хочу понять код, можно просто по добавлять комментарии к коду, буду очень благодарен
#include <stdio.h>
#include <string.h>
 
#define SIZE 256
#define WORDS 30
#define DELIMS ",. "
 
int main(void)
{
    char str[SIZE] = "", *ptr = NULL, *word[WORDS] = { NULL };
    size_t counter = 0, i, j, flag;
 
    if (scanf("%255[^\n]", str) == 1 && fgetc(stdin) == '\n')
    {
    for (
            ptr = strtok(str, DELIMS);
            ptr != NULL && counter < WORDS;
            ++counter, ptr = strtok(NULL, DELIMS)
        )
    {
        word[counter] = ptr;
    }
 
    for (i = 0; i < counter; ++i)
    {
        flag = 0;
        for (j = 0; j < counter; ++j)
        {
        if (i != j && strcmp(word[i], word[j]) == 0)
            {
            flag = 1;
            break;
            }
        }
 
        if (flag == 0)
            printf("%s\n", word[i]);
    }
    }
 
    return 0;
}
Поднимаю
апп
Актуально
апп
апп
Очень актуально
Поднимаю
Апп
Апп
Апп

Решение задачи: «Найти все уникальные слова. Написать комментарии к коду»

textual
Листинг программы
(scanf("%255[^\n]", str) == 1 && fgetc(stdin) == '\n')

Объяснение кода листинга программы

  1. scanf(%255[^\n], str) - этот код считывает строку из стандартного ввода, ограниченную 255 символами и оканчивающуюся символом новой строки. Здесь str - это указатель на строку, которую нужно считать. Форматная спецификатор %255[^\n] означает: считать максимально возможное количество символов, кроме символа новой строки, и сохранить их в строку. Возвращаемое значение scanf будет 1, если считывание прошло успешно, и 0 в противном случае. Поэтому условие (scanf(%255[^\n], str) == 1) проверяет, было ли успешно считано хотя бы одно слово.
  2. fgetc(stdin) == '\n' - этот код считывает символ из стандартного ввода и проверяет, является ли он символом новой строки. Здесь stdin - это файловый дескриптор для стандартного ввода. Если считанный символ является символом новой строки, то условие возвращает true, иначе - false. Поэтому это условие проверяет, было ли считано полное слово, а не часть следующего слова. Вывод: данный код считывает слова из стандартного ввода до тех пор, пока не встретит символ новой строки. Каждое считанное слово сохраняется в строку str.

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


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

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

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