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