1

我正在编写一个程序,并且无法同时使用 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”

谁能帮我?

4

4 回答 4

15

我想你想要fscanf而不是scanf

于 2008-09-24T18:39:52.047 回答
2

您的代码看起来应该使用 fscanf,而不是 scanf。

我强烈建议使用 fgets 和 sscanf 而不是直接调用 fscanf。

fscanf 可能会以使您怀疑文件指针所在位置的方式失败。使用 fgets 获取整行并使用 sscanf 扫描字符串意味着您始终知道文件指针的状态,并且很容易备份到行的开头(字符串仍在内存中)。

于 2008-09-26T07:00:55.487 回答
1

您使用了错误的功能。你应该使用fscanf.

于 2008-09-24T18:40:11.030 回答
0

怎么样:

freopen ("StcWx.txt","r",stdin);

scanf("%i %i %i %.2f %i %i", &Year, &Month, &Day, &Precip, &High, &Low);

http://www.cplusplus.com/reference/cstdio/freopen/

于 2019-02-08T10:42:59.600 回答