Проблема подсчета строк в C между CSV и TXT файлами - PullRequest
0 голосов
/ 18 февраля 2019

Я занимаюсь программированием на C, и я решил создать функцию, которая будет подсчитывать количество строк в файле для последующего использования при создании матрицы.Проблема возникает, когда я предоставляю файлы разных типов.Я заметил, что когда я предоставляю функции txt-файл, она считается на один меньше, чем нужно, в то время как csv считает правильное количество строк.

int countRows(char fileName[100]){
    FILE *fp;
    int nl = 1;
    char c;

    fp = fopen(fileName, "r");
    for (c = getc(fp); c != EOF; c = getc(fp)){
        if(c == '\n'){
            nl = nl + 1;
        }
    }

    fclose(fp);
    return nl;
}

Скажите, если бы у меня был текстовый файл как

age name    score
15  jared   90
16  jerome  85
18  timmy   9

Я бы ожидал вывод 4 строки.

1 Ответ

0 голосов
/ 18 февраля 2019

Чтобы получить правильный алгоритм, вы должны написать аналогичную функцию, которая считает строки строки.Вот несколько тестов:

  • "" имеет 0 строк
  • "hello" имеет 1 строку, хотя в нем нет символов \n
  • "\n" имеет 1 строку
  • "hello\n" также имеет 1 строку
  • "hello\n\n\n" имеет 3 строки
  • "\ntext" имеет 2 строки

Вы должны написать автоматические тесты для этих тестов.Макрос assert является простым и хорошим выбором для этого.

Как только ваш алгоритм охватывает все эти тестовые случаи, он, вероятно, будет работать и для файлов.

...