使用c中的缓冲区读取文件

时间:2016-10-17 09:26:24

标签: c file io

这是我的代码,其中fp是打开的文件

unsigned char string[10];
while(fgets(string, 10, fp))
    // do stuff with string

现在我想循环数组中的每个char,但是当文件只有5个字符时数组是如何填充的。它是否包含EOF字符或什么?

2 个答案:

答案 0 :(得分:2)

来自fgets()

  

fgets()从流中读取最多一个小于大小的字符   并将它们存储到s指向的缓冲区中。阅读停止后   EOF或换行符。如果读取换行符,则将其存储到   缓冲。终止空字节(' \ 0')存储在最后一个字节之后   缓冲区中的字符。

这意味着如果您的文件在一行中只包含5个字符(即假设不超过一个换行符), 那么string将包含5个字符,string中的第6个字节将是终止空字节。

要循环播放,您可以使用:

for(i = 0; string[i]; i++) { //until the terminating byte
    char ch = string[i];
    ...
}

答案 1 :(得分:1)

字符串从0开始存储在数组中 - 长度以\ 0结尾 所以你可以在循环中使用\ 0或访问每个字符串

   char string[100] //
    for(i=0;string[i]!=\0;i++) // looping until I becomes \0
        {
        ch=string[i];
        }