Почему я получаю мусор для цикла с использованием массива строк, получает и помещает?

Функция put не печатает 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 ответ

fflush(stdin);   

является неопределенным поведением. Это должен быть один поток вывода или обновления, который передается fflush, То, что вы сделали, может привести к чему-то странному нормальному поведению.

gets устарела и не предназначена для использования. использование fgets вместо. Вы должны быть в состоянии войти 2 персонажи и \n с указанным размером массива. Может быть, вы имели в виду para[3][20], gets не имеет безопасности по переполнению буфера. То есть fgets в форме указания количества символов, которые вы хотите прочитать.

Другие вопросы по тегам