繁体   English   中英

用 C 从文件中读取整数

[英]Reading ints from file with C

这是一个非常简单的问题,但我似乎无法在这里找到有关它的内容。 我想用 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

提前致谢

这一行:

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

将一个整数放入s[0] ,另一个放入t ,但您正在打印s[0] (这是您的第一个整数)和s[1] ,它未初始化(因此是“随机”)。

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

你的问题在这一行:

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]);

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

当您执行 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;
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM