Я пытаюсь прочитать файл test.txt через fscanf и сохранить его в массиве struct. Я опубликовал код, который я попробовал. Похоже, проблема здесь с функцией нагрузкиC Программирование: чтение из файла и печать на экране
Это то, что я имею в test.txt:
205,11.20,John Snow
336,23.40,Winter is coming
220,34.20,You know nothing
функция нагрузка использует loadinput функцию для чтения файла test.txt в «пункте» массив и устанавливает цель «NoPtr» на количество элементов, считанных из файла (что в данном случае должно быть 3).
После прочтения файла, я также пытаюсь распечатать его на экране, но это не сработает. Ничего не отображается вообще.
Эта программа компилируется. Что я здесь делаю неправильно?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Item {
double value;
int unit;
char name[50];
};
int load(struct Item* item, char Name[], int* NoPtr);
int loadinput(struct Item* item, FILE* data);
void display(struct Item item, int variableA);
int main(void)
{
struct Item FIN[3];
int i, n;
load(FIN, "test.txt", &n);
for (i = 0; i < n; i++)
{
display(FIN[i],0);
}
return 0;
}
int load(struct Item* item, char Name[], int* NoPtr)
{
struct Item ARR[3];
int flagcheck;
FILE* fl;
fl = fopen("Name[]", "r");
while (fl)
{
flagcheck = loadinput(&ARR, fl);
if (flagcheck < 0)
{
fclose(fl);
break;
}
else
{
*NoPtr++;
}
fclose(fl);
}
return 0;
}
int loadinput(struct Item* item, FILE* data)
{
int ret = fscanf(data, "%d,%lf,", &item->unit, &item->value);
if (ret != 2) {
return -1;
}
fgets(item->name, sizeof item->name, data);
item->name[strlen(item->name)-1] = '\0';
return 0;
}
void display(struct Item item, int variableA)
{
printf("|%3d |%12.2lf| %20s |***\n", item.unit, item.value, item.name);
return;
}
'FOPEN ("Name []", "г");', а затем просто предположим, что работал с не проверяя никаких ошибок? 'Name []' является довольно странным именем файла ... – John3136
Вы имеете в виду 'fopen (Name," r ");'? – bansi
'item-> name [strlen (item-> name) -1]' Завершение строки с помощью 'strlen' в строке, которую вы пытаетесь завершить? – John3136