为什么我使用字符串数组,获取和放置for循环?

时间:2018-02-28 14:59:09

标签: c for-loop garbage gets puts

在我输入时,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;
}

1 个答案:

答案 0 :(得分:2)

fflush(stdin);   

是未定义的行为。它应该是传递给fflush的一个输出或更新流。这,你所做的可能会导致一些奇怪的正常行为。

gets已弃用,并不打算使用。请改用fgets。您应该能够输入2个字符以及显示数组大小的\n。也许你的意思是para[3][20]gets对缓冲区溢出没有安全性。也就是说fgets的形式是指定你想要阅读的字符数。