我如何在fopen中使用scanf()
时间:2020-03-06 14:40:51 来源:igfitidea点击:
我正在编写程序,但无法同时使用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"
谁能帮我?
解决方案
我想你要fscanf而不是scanf。
我们使用的是错误的功能。我们应该使用fscanf
。
代码看起来应该使用fscanf而不是scanf。
我强烈建议使用fgets和sscanf,而不是直接调用fscanf。
fscanf可能会以某种方式失败,从而使我们无法确定文件指针的位置。使用fgets获取整行并使用sscanf扫描字符串意味着我们始终知道文件指针的状态,并且很容易备份到行的开头(字符串仍在内存中)。