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;
}
fflush(stdin);
是未定义的行为。它应该是传递给fflush
的一个输出或更新流。这,你所做的可能会导致一些奇怪的正常行为。
gets
已被弃用,并不打算使用。请改用fgets
。你应该能够输入2
字符和一个显示数组大小的\n
。也许你的意思是para[3][20]
。 gets
对缓冲区溢出没有安全性。也就是说,fgets
的形式是指定您想要阅读的字符数。