Подсчитать количество чисел в текстовом файле - C (СИ) (72411)
Формулировка задачи:
Подсчитать кол-во чисел в текстовом файле.
Решение задачи: «Подсчитать количество чисел в текстовом файле»
textual
Листинг программы
#include <stdio.h> unsigned file_count_n(const char* fn){ int i, j; char b[256], *p; unsigned n = 0; FILE* fp = fopen(fn, "rt"); if(fp == NULL) return 0; i = 0; while(fgets(b, sizeof(b) - 1, fp) != NULL){ if(ferror(fp) != 0) break; for(p = &b[0]; *p; ++p){ j = (*p >= '0' && *p <= '9'); if(j) ++i; else if(! j){ if(i > 0) ++n; i = 0; } } } fclose(fp); return n + (unsigned)(i != 0); } int main(void){ char fn[] = "file.txt"; unsigned n = file_count_n(fn); printf("count numbers: %u\n", n) return 0; }
Объяснение кода листинга программы
В этом коде:
- Создается функция
file_count_n
, которая принимает в качестве аргумента имя файла и возвращает количество чисел в файле. - В функции используется массив
b
размером 256 символов для чтения данных из файла построчно. - Функция открывает файл с помощью
fopen
и проверяет, открылся ли файл успешно. Если файл не открылся, функция возвращает 0. - Переменная
i
инициализируется как 0. Она используется для подсчета количества чисел в каждой строке. - В цикле
while
функция читает каждую строку из файла с помощьюfgets
. Если чтение строки не удалось, цикл прерывается. - В каждой строке в цикле
for
проверяется каждый символ. Если символ является числом, то увеличивается счетчикi
. Когда встречается нечисловой символ, значениеi
сбрасывается до 0, и переменнаяn
увеличивается на 1. - После окончания чтения файла, функция закрывает его с помощью
fclose
и возвращает общее количество чисел в файле, а также количество чисел в последней строке, если она не пустая. - В функции
main
создается строкаfn
, содержащая имя файлаfile.txt
. - Функция
file_count_n
вызывается с аргументомfn
, и результат сохраняется в переменнойn
. - Значение
n
выводится на экран с помощьюprintf
. - Функция
main
возвращает 0, заканчивая выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д