【发布时间】:2021-06-22 04:29:06
【问题描述】:
所以我试图在 while 循环中使用 fscanf() 从输入文本文件中读取成对的数字。文本文件将类似于以下内容:
(2, 50) (4, 30) (9, 30) (10, 400) (-5, -40)
(7, 20) (19, 200) (20, 50) (-18, -200) (-2, 29)
我的代码是:
int main()
{
FILE *fp;
fp = fopen("File", "r");
if (fp == NULL)
{
perror("Invalid input!");
return 0;
}
else
{
int key, value;
int check;
while (fscanf(fp, "(%d,%d)", &key, &value) != EOF)
{
printf("(%d, %d)\n", key, value);
check = fscanf(fp, "(%d,%d)", &key, &value);
printf("%d", check);
}
}
return 0;
}
但是输出不是遍历文件中的每一对,而是无限地打印 (2,50)。有人可以帮我修复我的代码吗?
我也希望'check'至少返回 2,因为它成功地有两个值,即 2 和 50。但它总是返回 0。
【问题讨论】:
-
您必须根据您希望它解析的参数数量来测试
fscanf的返回值。在您的情况下,这将是2并且任何其他值都表示错误(或 EOF)。
标签: c while-loop scanf