Подсчитать в файле количество переходов на новую строку - C (СИ)

Узнай цену своей работы

Формулировка задачи:

while (nl < nlmax && fgets(data[nl], 1000, file)) {
char *p;
p = strrchr(data[nl], '\n');
if (p)
*p = '\0';
nl++;
}
не считает переход на новую строку циклит первую из файла .txt

Решение задачи: «Подсчитать в файле количество переходов на новую строку»

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;
}

Объяснение кода листинга программы

  1. Объявлены следующие переменные:
    • size_t count - для хранения количества переходов на новую строку
    • const size_t block_size - размер блока данных
    • size_t read_count - количество прочитанных символов в блоке
    • size_t index - индекс текущего символа в блоке
    • char * block - указатель на блок данных
    • FILE * in - указатель на файл
  2. Выделен блок памяти с помощью malloc для хранения данных из файла.
  3. Открывается файл с помощью fopen для чтения в бинарном режиме.
  4. В цикле do-while происходит чтение блока данных из файла с помощью fread.
  5. В цикле while происходит проверка каждого символа в блоке на равенство символу новой строки ('\n'). Если символ является символом новой строки, увеличивается счетчик count.
  6. После окончания чтения блока данных, счетчик count увеличивается на количество переходов на новую строку, которые были найдены в этом блоке.
  7. Блок памяти освобождается с помощью free.
  8. Функция возвращает общее количество переходов на новую строку.

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


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

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

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