【发布时间】:2017-06-25 10:40:34
【问题描述】:
我打算读取一个输入文件,该文件的名称和数字由缩进分隔,例如
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;
}
到目前为止,它注册它会打开一个文件并打印“文件已加载”,但之后失败。我显然没有将数据保存到结构中。
【问题讨论】:
-
@chrisaycock "你需要
"%s\t%d"而不是"%s %d"--> 没有。'\t'和' '都匹配任何空格并且 都不匹配这里需要%d占用前导空白。