这里有一段简单的代码,但我得不到期望的输出。
#include<stdio.h>
int main()
{
char buf[1024];
while(1)
{
fgets(buf,strlen(buf),stdin);
printf("%s",buf);
printf("hello");
}
}
在上面的代码中,我希望无论我从键盘输入什么字符串,都能将其原样打印出来然后输出hello。 据我所知,fgets()是一个阻塞函数,直到我从键盘输入一串字符串并按下ENTER键时,它才会阻塞程序。所以当我运行它时,我的期望结果如下:
$ ./a.out
I input some text here <ENTER>
I input some text here
hello
但实际上,我得到的输出是在终端上无限循环打印“hello”。为什么我的fgets()不能阻塞程序呢?有什么想法吗?
sizeof
更好。如果你将其更改为char buf[512]
而没有调整你的fgets(1024)
,那么你会遭受痛苦的折磨。 - paxdiablo