在文件处理

时间:2016-01-07 21:14:15

标签: c file

我有一个while循环,如下所示:

while(fscanf(fp,"%d",&arr[i][j])
{
    //body of the loop containg
    //some code.
}

此处fp是文件指针。

该文件包含全零和一。

请帮助我理解fscanf函数的工作原理。

此外,我无法理解while循环的功能。

while循环如何获得布尔值作为条件?

非常感谢一步一步的解释......我只是新的 C 中的概念文件: - )

1 个答案:

答案 0 :(得分:4)

fscanf返回转换成功项目的数量。由于格式字符串只有一个说明符,如果成功转换了数字1,它将返回0。在C中,0被认为是假的,其他任何都是真的。因此,while循环将继续,只要它成功解析文件中的数字。

但是,最好写

while (fscanf(fp,"%d",&arr[i][j]) == 1)

因为fscanf在到达文件末尾时也可以返回EOF。这是非零(总是负数,因此它不是可能转换的项目数),并且也会被视为true,因此代码将在最后无限循环。