我有一个while
循环,如下所示:
while(fscanf(fp,"%d",&arr[i][j])
{
//body of the loop containg
//some code.
}
此处fp
是文件指针。
该文件包含全零和一。
请帮助我理解fscanf
函数的工作原理。
此外,我无法理解while
循环的功能。
while
循环如何获得布尔值作为条件?
非常感谢一步一步的解释......我只是新的 C 中的概念文件: - )
答案 0 :(得分:4)
fscanf
返回转换成功项目的数量。由于格式字符串只有一个说明符,如果成功转换了数字1
,它将返回0
。在C中,0
被认为是假的,其他任何都是真的。因此,while
循环将继续,只要它成功解析文件中的数字。
但是,最好写
while (fscanf(fp,"%d",&arr[i][j]) == 1)
因为fscanf
在到达文件末尾时也可以返回EOF
。这是非零(总是负数,因此它不是可能转换的项目数),并且也会被视为true,因此代码将在最后无限循环。