Дан символьный файл. Найти в нем слова, в которые буква "a" входит не менее 2х раз (без учета регистра) - C (СИ)
Формулировка задачи:
Дан символьный файл. Найти в нем слова в которые буква "a" входит не менее 2х раз ( без учета регистра ): Примечание: здесь для чтения из файла лучше использовать fscanf. (не использовать ф-ии из библиотеки string.h)
и еще подскажите, пожалуйста, как изменить формат файла .*txt на .*dat
просто переименовать не получается
Решение задачи: «Дан символьный файл. Найти в нем слова, в которые буква "a" входит не менее 2х раз (без учета регистра)»
textual
Листинг программы
#include <stdio.h> int main() { const char CFile[] = "file.txt"; int cnt; char text[64], * p; FILE* f = fopen(CFile, "r"); if (f == NULL) { perror(CFile); return 1; } while (fscanf(f, "%63s", text) == 1) { cnt = 0; for (p = text; *p; ++p) { if ((*p == 'a') || (*p == 'A')) { cnt++; } } if (1 < cnt) { printf("%s : %d\n", text, cnt); } } fclose(f); return 0; }
Объяснение кода листинга программы
В этом коде на языке C выполняется поиск слов в текстовом файле, в которых буква a
встречается не менее двух раз (без учета регистра).
- В начале определяется имя файла, с которым будет работать программа, и сохраняется в константной строке CFile.
- Затем объявляются необходимые переменные:
- cnt - счетчик, который будет отслеживать количество букв
a
в текущем слове; - text - массив символов, в котором будет храниться текущее слово;
- p - указатель на текущий символ в массиве text;
- f - указатель на файл, который открывается для чтения.
- cnt - счетчик, который будет отслеживать количество букв
- Если файл не может быть открыт, выводится сообщение об ошибке и возвращается код завершения 1.
- В цикле while с помощью функции fscanf считываются слова из файла и сохраняются в массиве text.
- Для каждого слова запускается цикл for, который перебирает все символы слова. Если символ равен
a
илиA
, увеличивается счетчик cnt. - После проверки всех символов слова, если cnt больше 1, слово выводится на экран.
- После окончания чтения файла, функция fclose закрывает файл, а функция fscanf возвращает значение EOF.
- Если в цикле while было прочитано хотя бы одно слово, соответствующее условию, программа выводит сообщение об успешном выполнении.
- В конце программы возвращается код завершения 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д