Очистка буфера с помощью fgets - PullRequest
0 голосов
/ 26 мая 2011

Раньше я использовал fflush(stdin).Я читал, что это не очень хороший способ избавиться от лишних символов, и что лучше использовать fgets, например так:

fgets(buffer,maxsize,stdin);

В тех случаях, когда я хочу избавиться от этих лишних символов ...какой буфер я должен использовать?Могу ли я перенаправить в какой-то «буфер без возврата»?Или я должен использовать массив конечных размеров?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 26 мая 2011
2 голосов
/ 26 мая 2011

используйте consumetoendofline(stdin) вместо:)

int consumetoendofline(FILE *where) {
    int ch;
    while (((ch = fgetc(where)) != '\n') && (ch != EOF)) /* void */;
    return ch;
}

Вы можете ( и должны ) даже проверить возвращаемое значение, чтобы увидеть, достиг ли поток своего конца, или, возможно, есть еще ожидающие данные ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...