Дан символьный файл. Найти в нем слова, в которые буква "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 встречается не менее двух раз (без учета регистра).

  1. В начале определяется имя файла, с которым будет работать программа, и сохраняется в константной строке CFile.
  2. Затем объявляются необходимые переменные:
    • cnt - счетчик, который будет отслеживать количество букв a в текущем слове;
    • text - массив символов, в котором будет храниться текущее слово;
    • p - указатель на текущий символ в массиве text;
    • f - указатель на файл, который открывается для чтения.
  3. Если файл не может быть открыт, выводится сообщение об ошибке и возвращается код завершения 1.
  4. В цикле while с помощью функции fscanf считываются слова из файла и сохраняются в массиве text.
  5. Для каждого слова запускается цикл for, который перебирает все символы слова. Если символ равен a или A, увеличивается счетчик cnt.
  6. После проверки всех символов слова, если cnt больше 1, слово выводится на экран.
  7. После окончания чтения файла, функция fclose закрывает файл, а функция fscanf возвращает значение EOF.
  8. Если в цикле while было прочитано хотя бы одно слово, соответствующее условию, программа выводит сообщение об успешном выполнении.
  9. В конце программы возвращается код завершения 0, что означает успешное выполнение.

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


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

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

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