[英]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.