Как прочитать разделенный табуляцией файл в C? - PullRequest
0 голосов
/ 06 марта 2020

Итак, у меня есть файл записей, разделенных пробелами. Это выглядит так:

Name[Tab]Number 
Name[Tab]Number 
Name[Tab]Number 

У меня также есть структура:

typedef struct {
    char name[50];
    int number;
} Record;

У меня есть массив записей, и я хочу прочитать файл в. Когда я делаю это:

for (int i = 0; i < 3; i++) {
    fscanf(filePointer, "%s\t%d\n", recordArray[i].name, recordArray[i].number);
}

Все в файле читается как 0. Что я делаю не так?

Редактировать: изменено на это, и оно все еще не работает:

for (int i = 0; i < 3; i++) {
    fscanf(filePointer, " %s %d", recordArray[i].name, &recordArray[i].number);
}

Проведя некоторую отладку, я обнаружил, что если установить каждую из них вручную, например, так:

recordArray[0] = (Record) { "Name", 0 };

Она работает, и я могу распечатать ее так:

printf("%s %d\n", recordArray[0].name, recordArray[0].number);

Какие выдаст: 1029 * Я до сих пор не уверен, что происходит.

1 Ответ

0 голосов
/ 06 марта 2020

Для всех, кому небезразлично:
Ранее в функции я проверил количество строк в файле и забыл перемотать указатель файла. Это привело к тому, что fscanf() вернул -1 (EOF), поскольку указатель файла уже переместился за пределы данных. "%s %d" - правильный форматировщик для того, что я пытался сделать, и я обязательно добавил & к recordArray[i].number.

...