【问题标题】:Reading ints from file with C用C从文件中读取整数
【发布时间】:2009-09-02 16:22:04
【问题描述】:

这是一个非常简单的问题,但我似乎无法在此处找到有关它的内容。我想用 C 从一个文件中读取两个整数。我现在的代码是这样的:

int main() {
    FILE *fp;
    int s[80];
    int t;

    if((fp=fopen("numbers", "r")) == NULL) {
        printf("Cannot open file.\n");
    } else {
        fscanf(fp, "%d%d", s, &t);
        printf("%d %d\n", s[0], s[1]);
    }

return 0;
}

我从文件中得到第一个整数,但下一个只是一个随机数。我的文件是这样的:

100 54

提前致谢

【问题讨论】:

    标签: c file io


    【解决方案1】:

    这一行:

    fscanf(fp, "%d%d", s, &t);
    

    将其中一个 int 放入 s[0],另一个放入 t,但您打印出 s[0](这是您的第一个 int)和 s[1],这是未初始化的(因此是“随机的” )。

    【讨论】:

      【解决方案2】:

      您正在将结果读入 s 和 t 但只打印 s ?

      【讨论】:

        【解决方案3】:

        你的问题出在这一行:

        fscanf(fp, "%d%d", s, &t);
        printf("%d %d\n", s[0], s[1]);
        

        您正在读取 s[0] 和 t,但打印 s[0] 和 s[1]。以下任何一种都可以作为替代品:

        fscanf(fp, "%d%d", s, &t);
        printf("%d %d\n", s[0], t);
        

        或者:

        fscanf(fp, "%d%d", &s[0], &s[1]);
        printf("%d %d\n", s[0], s[1]);
        

        【讨论】:

          【解决方案4】:

          你永远不会初始化它。您将指针传递给s,这意味着(此处)第一个元素,作为第一个参数。你希望在s[1] 中出现什么?

          【讨论】:

            【解决方案5】:

            当您执行 fscanf 时,您使用的是一组变量。 但是当您执行 printf 时,您正在使用另一个。

            使其正常工作的一种方法:

            #include "stdio.h"
            int main()
            {
              FILE *fp;
              int s[80];
            
              if((fp=fopen("numbers", "r")) == NULL) {
                printf("Cannot open file.\n");
              } else {
                fscanf(fp, "%d%d", &s[0], &s[1]);
                printf("%d %d\n", s[0], s[1]);
                fclose(fp);
              }
            
              return 0;
            }
            

            【讨论】:

              【解决方案6】:

              你需要读入&s[0]&s[1]打印出s[0]t

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2014-06-09
                • 1970-01-01
                • 1970-01-01
                • 2011-12-28
                • 1970-01-01
                • 2017-08-23
                • 1970-01-01
                相关资源
                最近更新 更多