【问题标题】:How do I use scanf() with fopen如何在 fopen 中使用 scanf()
【发布时间】:2010-09-12 20:10:11
【问题描述】:

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

谁能帮帮我?

【问题讨论】:

  • 您需要提供更多细节。比如年、月、日、降水、高、低的类型有哪些?

标签: c fopen scanf


【解决方案1】:

我想你想要fscanf 而不是scanf

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • ...和第四个参数的 atoi()
      【解决方案4】:

      怎么样:

      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/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-13
        • 1970-01-01
        • 2019-10-26
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多