我计划读取一个输入文件,该文件的名称和数字用缩进分隔,例如
Ben 4
Mary 12
Anna 20
Gary 10
Jane 2
然后再对数据执行堆排序。我无法复制数据并将其存储到结构数组中。
#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 file\n");
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;
}
到目前为止它注册它打开一个文件并打印“文件已加载”但后来失败。我显然没有将数据保存到结构中。
答案 0 :(得分:5)
您正在使用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
中不需要运算符的地址,因为它已经(衰减到)指针。
答案 1 :(得分:3)
除了@Keine Lust所说的,
i
没有初始值,你不能像你一样使用/增加整数而没有值。
尝试:
int i=0