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


#include <stdio.h>
int main(void) {
   char str[50];
   printf("Enter a string : ");
   gets(str);
   printf("You entered: %s", str);
   return(0);
}

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

Enter a string : abcde
You entered: abcde

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

输出可能是行缓冲的,并且 printf 字符串不以换行符结尾。在任何不以 n 结尾的printf()后强制输出带有 fflush(NULL); .

使用 fgets(char *str, int n, FILE *stream); 而不是 gets

最新更新