我想知道为什么它继续打印1号,即使我的文件中没有1号
The input file is: file.in
2
4
0 0 0 0
FILE *fp;
fp = fopen("file.in","r");
if(fp != NULL)
{
fscanf(fp, "%d\n", &noOfPuzzles);
fscanf(fp, "%d\n", &dimensionOfBoard);
int position[dimensionOfBoard];
int value[dimensionOfBoard];
for(i = 0 ; i< dimensionOfBoard; i++)
{
position[i] = fscanf(fp, "%d ", &value[i]);
}
}
printf("No. of Puzzles: %d\n",noOfPuzzles);
printf("Dimension of Board: %d\n",dimensionOfBoard);
for(i = 0 ; i< dimensionOfBoard; i++)
{
printf("%d ",position[i]);
}
The output is always like this:
No. of Puzzles: 2
Dimension of Board: 4
1 1 1 1
为什么它会继续打印数字&#39; 1&#39;?谢谢
答案 0 :(得分:2)
您正在做的是捕获fscanf()的返回值:
position[i] = fscanf(fp, "%d ", &value[i]);
你将1存放在位置[i],因为fscanf()返回1表示它填充了1个值 - 你正在读取值[i]的实际值,然后输出位置[i]中的值
fscanf(fp, "%d", &position[i]);
将工作,在最后一个循环中输出value []数组的值。
答案 1 :(得分:0)
您要将fscanf()
的返回值分配给position[i]
,它会返回成功填充的值的数量,如果发生错误,则返回-1。
相反,您需要使用values[i]
数组来打印从文件中读取的零。
答案 2 :(得分:0)
您对fscanf
的使用不正确。 fscanf
会返回成功扫描的项目数,即您的案例中的1项,从而为1
的每个成员分配position
。我不知道value
数组的用途是什么,但你可以像这样直接扫描position
:
fscanf(fp, "%d ", &position[i]);
答案 3 :(得分:0)
您正在打印位置[i],您已将其设置为fscanf的返回值。在这种情况下,Fscanf将读取值放入其第二个参数中,并返回读取的字符数。您需要打印出值[i]。