这是我的代码,其中fp是打开的文件
unsigned char string[10];
while(fgets(string, 10, fp))
// do stuff with string
现在我想循环数组中的每个char,但是当文件只有5个字符时数组是如何填充的。它是否包含EOF字符或什么?
答案 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];
}