У меня возникают проблемы при использовании gets в C.
...
int main()
{
char test[20], m[20];
int n;
scanf("%d", &n);
while(n)
{
gets(test);
test.kolona = n;
m = decode(test); //some function
printf("%s",m.sif);
putchar('\n');
scanf("%d", &n);
}
}
Когда я ввожу число и нажимаю ввод, он автоматически «печатает» новую строку, прежде чем вы введете строку. Я немного поискал и обнаружил, что этого можно избежать, если вы поставите gets перед этим, например:
...
scanf("%d", &n);
gets(test)
while(n);
{
gets(test);
...
}
Но затем он снова портится, поскольку цикл продолжается :(
Есть ли элегантное решение для этого?
gets
. Это настолько плохо, что его даже исключили из стандарта C в 1999 году. Посмотрите наfgets
. (Который по-прежнему включает окончание строки\n
.) used" title="почему функция gets опасна, почему ее не следует использовать">stackoverflow.com/questions/1694036/ stackoverflow.com/questions/4309746/безопасная альтернатива для получения - person Deduplicator   schedule 21.11.2014fgets
, а затем отсканировать ее на предмет всего, что вы хотите, с помощьюsscanf
или чего-то еще. - person Deduplicator   schedule 21.11.2014