我如何在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扫描字符串意味着我们始终知道文件指针的状态,并且很容易备份到行的开头(字符串仍在内存中)。