在 C 中一起使用 get() 和 printf() 会产生意想不到的结果

use*_*870 0 c

#include <stdio.h>

int main(void) {

   char str[50];
   printf("Enter a string : ");
   gets(str);
   printf("You entered: %s", str);
   return(0);
}
Run Code Online (Sandbox Code Playgroud)

我在 Eclipse 上运行代码,我希望得到以下结果:

Enter a string : abcde
You entered: abcde
Run Code Online (Sandbox Code Playgroud)

但是当我运行程序时,第一条打印语句没有出现在控制台中,并且在我输入任何字符串后,程序失败了。谁能告诉我为什么会这样?另外,你能告诉我如何修复我的代码以获得预期的结果吗?

Jen*_*ens 5

输出可能是行缓冲的,并且您的 printf 字符串不以换行符结尾。力输出,fflush(NULL);之后的任何printf()不结束\n