我在使用Error: This expression has type 'a option but an expression was expected of type int
函数时发现了这样:
fgets
如果我输入#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char str[10];
fgets(str, 5, stdin);
printf("%s", str);
system("PAUSE");
return 0;
}
,则会输出123456789
。这是4个字符 - 而不是我在函数中定义的5个字符。第五个角色发生了什么?
编辑:标题已更新
答案 0 :(得分:0)
这是因为由于C字符串被NUL终止,fgets
会考虑字符串终结符(\0
),所以如果你传递一个5-char缓冲区,它是安全的。
在您的代码中,您应该:
fgets(str, sizeof(str), stdin);
因为str
是一个已知大小的数组。