【发布时间】:2017-01-18 11:36:16
【问题描述】:
我不知道怎么了。我是正确的,但我有这样的问题。 这是我第一个用 C 语言连接文件的程序,我不知道我做错了什么。
2.c: In function ‘main’:
2.c:15:11: warning: format ‘%d’ expects argument of type ‘int *’, but argument 5 has type ‘int’ [-Wformat=]
fscanf(fp,"%s %s %d\n", a,b,c);
^
我的程序
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fp;
FILE *fb;
char z;
char a[20], b[20];
int c;
fp=fopen("data.txt","r");
fb=fopen("bigmoney.txt","a");
while (z!=EOF)
{
z=fgetc(fp);
fscanf(fp,"%s %s %d\n", a,b,c);
if (c > 2000)
fprintf(fb,"%s %s %d\n", a,b,c);
}
}
文件数据.txt
Jan Nowak 2000
Irena Pierwsza 3000
Irena Druga 2500
Krzysztof Mrugala 3500
Tadeusz Pat 2000
Emiliusz Jeden 1200
Adam Arma 6000
Kornel Robo 5000
Jan Kowalski 15000
agf dahf 524
sdgdagf adgdagf 345345
adgadgf dfdfgh 1168510135
arek kowalski 3300
【问题讨论】:
-
fscanf(... %d ...)期待一个指针,更改为fscanf(fp,"%s %s %d\n", a,b,&c);,(注意运算符&的地址),并且您在while的第一次迭代中使用未初始化的z循环。 -
错误信息能清晰多少? %d 需要一个
int*,您正在传递int。 -
天哪,我只是瞎了眼,我把&放错了地方,谢谢!