Почему я получаю мусор для цикла с использованием массива строк, получает и помещает?
Функция 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
в форме указания количества символов, которые вы хотите прочитать.