這裏簡單的代碼我沒有得到預期的輸出。沒有得到預期的輸出fgets()函數
#include<stdio.h>
int main()
{
char buf[1024];
while(1)
{
fgets(buf,strlen(buf),stdin);
printf("%s",buf);
printf("hello");
}
}
在上面的代碼中,我希望無論從鍵盤輸入的字符串被輸出到我的相同,然後你好。 因爲我知道fgets()是一個阻塞函數,直到我從鍵盤輸入一個字符串,然後按ENTER鍵它會阻止程序,直到那個時候。所以,當我運行它,我希望它如下
$ ./a.out
I input some text here <ENTER>
I input some text here
hello
但實際上,我所得到的輸出是印在終端的「你好」無限循環。爲什麼我的fgets()不阻止該程序?任何想法?
不_really_幻數的忠實粉絲。如果數組大小發生變化,那麼使用'sizeof'要好得多。如果你在不調整你的'fgets(1024)'的情況下將它改成'char buf [512]',那麼你就處於一個痛苦的世界。 – paxdiablo
當然是,但它只是解釋fgets將處理的價值。 –