Подсчитать количество чисел в текстовом файле - 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, заканчивая выполнение программы.