使用C从文件中读取int

时间:2009-09-02 16:22:04

标签: c file io

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

提前致谢

6 个答案:

答案 0 :(得分:6)

这一行:

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

你的问题就在这一行:

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

答案 3 :(得分:1)

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

答案 4 :(得分: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]);
  }

  return 0;
}

答案 5 :(得分:0)

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