2016-02-11 3 views
1

Вторая функция getchar не ждет ввода пользователя. Не удалось выяснить, чего не хватает в следующем кодеgetchar не ждет ввода пользователем

char ch = 'n'; 
bool status = false; 

printf("%s", "Some text1\n"); 
ch = getchar(); 

if ((ch == 'Y') || (ch == 'y')) 
{ 
    status = true; 
} 

if(status) 
{ 
    printf("%s", "Some text2\n"); 
    ch = getchar(); 

    if ((ch == 'Y') || (ch == 'y')) 
    { 
     status = eNoError; 
    } 
} 
+0

похоже http://stackoverflow.com/questions/12653884/getchar-does-not-stop-when-using-scanf – Jeyaram

+1

@Jeyaram: Ваша ссылка решила мою проблему. Спасибо – impulse

+0

@impulse Примечание: 'getchar()' возвращает 'int'. Итак, 'ch' должен быть' int'. –

ответ

5

Это из-за символа новой строки.

Когда вы вводите первый 'Y', вы фактически вводите строку, такую ​​как "Y\n".

Первый getchar() читает 'Y' и '\n' находится в буфере. Итак, второй getchar() получает этот символ '\n'.

+0

ОК. мне нужен другой getchar(), чтобы получить вход? или есть лучший способ справиться с этим – impulse

+0

Я считаю, что самым простым способом преодоления этого было бы использовать 'scanf ("% c ", & c)', согласно http://stackoverflow.com/a/18627241/371970 – WGH

+0

Эта проверка должна быть после каждого getchar.do { c = getchar(); } while (c! = '\ N' && c! = EOF); – impulse

Смежные вопросы