Я пытаюсь прочитать файл test.txt через fscanf и сохранить его в массиве struct. Это то, что я пробовал. Проблема здесь в том, что fscanf
не работает так, как предполагается. После прочтения файла, я также пытаюсь распечатать его на экране, но это не сработает.C Программирование: чтение файла и сохранение в массиве struct
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Item {
double value;
int unit;
char name[50];
};
int load(struct Item* item, FILE* data);
void display(struct Item item, int variableA);
int main()
{
struct Item I;
int i;
char ck;
ck = fopen("test.txt", "r");
if (ck)
{
for (i = 0; i < 3; i++)
{
load(&I, ck);
display(I, 0); //DISPLAY FUNCTION THAT READS test.txt and DISPLAYS
}
fclose(ck);
}
return 0;
}
int load(struct Item* item, FILE* data)
{
fscanf(data, "%d,%.2lf,%s\n", &(*item).unit,&(*item).value,&(*item).name);
return 0;
}
void display(struct Item item, int variableA)
{
printf("|%3d |%12.2lf| %20s |***\n", item.unit, item.value, item.name);
return;
}
Это то, что я имею в test.txt файле:
205,11.20,John Snow
336,23.40,Winter is coming
220,34.20,You know nothing
Ошибка: Программа компилируется с некоторыми предупреждениями, но я получаю ошибку сегментации, когда я выполняю код.
Любая идея, почему?
Ожидание выхода: OUTPUT должен быть прочитан из файла test.txt и должен отображаться на экране.
Может быть, потому, что "Джон" является неправильным; это «Джон» Снег ... –
@ ringø haha: D: D: D – John
Вам нужно отладить программу, чтобы увидеть, где происходит ошибка (чтение или показ), а также посмотреть, получаете ли вы то, что, по вашему мнению, получите. – Phil1970