在我输入时,puts函数不会打印3个字符串。它们含有垃圾。
#include <stdio.h>
#include <stdlib.h>
int main ()
{
char para[20][3];
int x;
for(x=0; x<3; x++)
{
gets(para[x]);
fflush(stdin);
}
for(x=0; x<3; x++)
puts(para[x]);
return 0;
}
答案 0 :(得分:2)
fflush(stdin);
是未定义的行为。它应该是传递给fflush
的一个输出或更新流。这,你所做的可能会导致一些奇怪的正常行为。
gets
已弃用,并不打算使用。请改用fgets
。您应该能够输入2
个字符以及显示数组大小的\n
。也许你的意思是para[3][20]
。 gets
对缓冲区溢出没有安全性。也就是说fgets
的形式是指定你想要阅读的字符数。