如果我要向stdout打印提示:
printf("> ");
Run Code Online (Sandbox Code Playgroud)
然后我说
fgets(tester, 80, stdin);
Run Code Online (Sandbox Code Playgroud)
fgets会读取包括">"在内的整行,还是会在此之后开始?
输出提示(打开stdout).fgets在读输入从stdin.所以不,它不会读你的提示.
您的终端显示stdout,stderr并且stdin一起显示,但这并不意味着它们之间没有潜在的区别.
stdout通常是 行缓冲,并且printf("> ");缺少新行,因此输出可能不会出现在终端显示器上,直到稍后. fflush(stdout)确保它在之前输出fgets().
printf("> ");
fflush(stdout);
fgets(tester, 80, stdin);
Run Code Online (Sandbox Code Playgroud)