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