Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2018, 16:56   #1
Anton_Jag
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 41
По умолчанию Очистка буфера ввода консоли

При вводе в буфере консоли остаётся мусор - последняя введенная строка. fflush(stdin) не помогает очистить.
Программа эмуляция бд - ввожу новую запись пять строк и одно число. Потом пытаюсь редактировать и в первый ввод scanf или gets попадает то что вводил до этого. Вроде проблему решило fseek(stdin, 0, SEEK_END) но я не понимаю почему так происходит?
Anton_Jag вне форума Ответить с цитированием
Старый 03.06.2018, 18:13   #2
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Код:
cin.ignore();
alexzk вне форума Ответить с цитированием
Старый 03.06.2018, 18:42   #3
FerrariF70
Пользователь
 
Регистрация: 05.09.2017
Сообщений: 21
По умолчанию

scanf("\n%d",&x); висящий спуск строки остаётся
FerrariF70 вне форума Ответить с цитированием
Старый 03.06.2018, 19:23   #4
Anton_Jag
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 41
По умолчанию

использую для чтения fgets() чтобы считать строку с пробелами
Anton_Jag вне форума Ответить с цитированием
Старый 03.06.2018, 19:24   #5
Anton_Jag
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 41
По умолчанию

по заданию можно использовать только чистый си
Anton_Jag вне форума Ответить с цитированием
Старый 03.06.2018, 19:28   #6
FerrariF70
Пользователь
 
Регистрация: 05.09.2017
Сообщений: 21
По умолчанию

ну логично чистый си я вам и наптсал либо можно такой вариант использовать

Код:
do{
scanf("%d",&x);
}while(x=='\n');
FerrariF70 вне форума Ответить с цитированием
Старый 03.06.2018, 19:31   #7
FerrariF70
Пользователь
 
Регистрация: 05.09.2017
Сообщений: 21
По умолчанию

вы сфайла считываете?
FerrariF70 вне форума Ответить с цитированием
Старый 03.06.2018, 20:08   #8
Anton_Jag
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 41
По умолчанию

Код:
int elementInput(char* proiz, char* model, char* apert, int* iso, char* razresh, char* format){
    fflush(stdin);
    clearbuff();
    printf("Производитель - ");
    fgets(proiz, S_FIELD, stdin);
    proiz[strlen(proiz)-1] = '\0';
    printf("Модель - ");
    fgets(model, S_FIELD, stdin);
    model[strlen(model) - 1] = '\0';
    printf("Аппертура - ");
    fgets(apert, S_FIELD, stdin);
    apert[strlen(apert) - 1] = '\0';
    printf("ISO - ");
    if(scanf("%i", iso) == 0) return -1;
    getchar();
    printf("Разрешение - ");
    fgets(razresh, S_FIELD, stdin);
    razresh[strlen(razresh) - 1] = '\0';
    printf("Формат - ");
    fgets(format, S_FIELD, stdin);
    format[strlen(format) - 1] = '\0';
    clearbuff();
    fflush(stdin);
    return 0;
}

void clearbuff(){
while(kbhit()){
    getchar();
}
while(GetAsyncKeyState(VK_RETURN)){
    keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
}
fseek(stdin, 0, SEEK_END);
}
Anton_Jag вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очистка потока ввода в Си romantiqueamour Общие вопросы C/C++ 1 18.03.2017 20:39
очистка буфера обмена beegl Общие вопросы Delphi 21 04.01.2017 11:01
Очистка буфера клавиатуры Van-89 Паскаль, Turbo Pascal, PascalABC.NET 6 11.09.2012 19:40
Очистка буфера клавиатуры Hell Knight Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 01.03.2011 18:15
Perl.Очистка консоли (аналог Clrscr из паскаля) _-Re@l-_ Perl 2 04.12.2010 19:37