считывание данных из входного файла и хранение их в массиве struct
Я планирую прочитать входной файл, который имеет имя и номер, разделенные отступом, например
Ben 4
Mary 12
Anna 20
Gary 10
Jane 2
, а затем выполнить сортировку данных в куче. Однако у меня возникли проблемы с копированием данных и хранением их в массиве struct.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxcustomers 100
struct customer{
char name[20];
int service;
};
int main()
{
struct customer list[maxcustomers];
int i;
char c;
FILE *input;
FILE *output;
input = fopen("input-file.txt","r");
output = fopen("output-file.txt","w");
if(input == NULL){
printf("Error reading filen");
exit(0);
}
else{
printf("file loaded.");
}
while((c=fgetc(input))!=EOF){
fscanf(input, "%s %d", &list[i].name,&list[i].service);
printf("%s %d", list[i].name,list[i].service);
i++;
}
fclose(input);
//heapsort(a,n);
//print to output.txt
fclose(output);
return 0;
}
До сих пор он регистрирует, что открывает файл и печатает "файл загружен", но после этого терпит неудачу. очевидно, что я не сохраняю данные в структуру.
2 ответа:
Вы потребляете / прогуливаете файл как с
fgetc
, так и сfscanf
, Используйте толькоfscanf
:Обратите внимание, что вам не нужен адрес оператора вwhile (fscanf(input, "%19s %d", list[i].name, &list[i].service) == 2) { printf("%s %d", list[i].name, list[i].service); i++; }
&list[i].name
, потому что он уже (распадается на) указатель.