如何将scanf()与fopen一起使用

时间:2008-09-24 18:38:45

标签: c fopen scanf

我正在编写一个程序,但在使用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 个答案:

答案 0 :(得分:15)

我认为您希望fscanf不是scanf

答案 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);

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