Подсчитать в файле количество переходов на новую строку - C (СИ)
Формулировка задачи:
while (nl < nlmax && fgets(data[nl], 1000, file)) { char *p; p = strrchr(data[nl], '\n'); if (p) *p = '\0'; nl++; }
Решение задачи: «Подсчитать в файле количество переходов на новую строку»
textual
Листинг программы
size_t count_lines(const char* file_name) { const size_t block_size=1024; size_t read_count, index; size_t count = 0; char * block; FILE * in; block = (char*)malloc(block_size*sizeof(char)); if (NULL == block) return 0; if (NULL != (in = fopen(file_name, "rb"))) { do { read_count = fread(block, sizeof(char), block_size, in); index = 0; while (index < read_count) { if ('\n' == block[index]) ++count; ++index; } } while(block_size == read_count); fclose(in); } free(block); return count; }
Объяснение кода листинга программы
- Объявлены следующие переменные:
size_t count
- для хранения количества переходов на новую строкуconst size_t block_size
- размер блока данныхsize_t read_count
- количество прочитанных символов в блокеsize_t index
- индекс текущего символа в блокеchar * block
- указатель на блок данныхFILE * in
- указатель на файл
- Выделен блок памяти с помощью
malloc
для хранения данных из файла. - Открывается файл с помощью
fopen
для чтения в бинарном режиме. - В цикле
do-while
происходит чтение блока данных из файла с помощьюfread
. - В цикле
while
происходит проверка каждого символа в блоке на равенство символу новой строки ('\n'). Если символ является символом новой строки, увеличивается счетчикcount
. - После окончания чтения блока данных, счетчик
count
увеличивается на количество переходов на новую строку, которые были найдены в этом блоке. - Блок памяти освобождается с помощью
free
. - Функция возвращает общее количество переходов на новую строку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д