我正在编写一个程序,但在使用scanf和fopen一起工作时遇到了麻烦。
从我可以告诉我的错误路线似乎是:
FiLE * DataFile
DataFile = fopen("StcWx.txt","r");
scanf(DataFile, "%i %i %i %.2f %i %i", &Year, &Month, &Day, &Precip, &High, &Low);
它打开的文件有一个天气数据列表,如下所示:
1944 4 12 0 58 24
1944 4 13 0.4 58 29
1944 4 14 0.54 42 29
1944 4 15 0 43 27
(那些空格是制表符)
显示的错误是“[警告]从不兼容的指针类型传递`scanf'的arg 1”
任何人都可以帮助我吗?
答案 0 :(得分:15)
答案 1 :(得分:2)
您的代码看起来应该使用fscanf,而不是scanf。
我强烈建议使用fgets和sscanf而不是直接调用fscanf。
fscanf可能会以令人怀疑的方式失败,无论文件指针在哪里。使用fgets获取整行和sscanf来扫描字符串意味着你总是知道文件指针的状态,并且很容易备份到行的开头(字符串仍在内存中)。
答案 2 :(得分:1)
你使用了错误的功能。您应该使用fscanf
。
答案 3 :(得分:0)
怎么样:
freopen ("StcWx.txt","r",stdin);
scanf("%i %i %i %.2f %i %i", &Year, &Month, &Day, &Precip, &High, &Low);