fgets何时开始阅读?

use*_*850 -1 c

如果我要向stdout打印提示:

printf("> ");  
Run Code Online (Sandbox Code Playgroud)

然后我说

fgets(tester, 80, stdin);
Run Code Online (Sandbox Code Playgroud)

fgets会读取包括">"在内的整行,还是会在此之后开始?

T.J*_*der 5

输出提示(打开stdout).fgets在读输入stdin.所以不,它不会读你的提示.

您的终端显示stdout,stderr并且stdin一起显示,但这并不意味着它们之间没有潜在的区别.

stdout通常是 行缓冲,并且printf("> ");缺少新行,因此输出可能不会出现在终端显示器上,直到稍后. fflush(stdout)确保它在之前输出fgets().

printf("> ");  
fflush(stdout);
fgets(tester, 80, stdin);
Run Code Online (Sandbox Code Playgroud)

  • 进一步澄清:您的终端一起显示`stdout`,`stderr`和`stdin`,但这并不意味着它们之间没有潜在的区别 (2认同)