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

问题描述 投票:-1回答:1

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;
}
c for-loop garbage gets puts
1个回答
2
投票
fflush(stdin);   

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

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

© www.soinside.com 2019 - 2024. All rights reserved.