У меня есть этот цикл, но когда я нажимаю enter после моего символа, он обрабатывает его, а затем обрабатывает '\ n', прежде чем запрашивать ввод снова. Пожалуйста!!!! ПомощьУдалить новый символ строки из консоли
int input;
while (true){
input = getchar();
fflush(NULL);
input = input - '0';
if(input != 'e' && input != '\n') {
rc = state_fun(input);
}
5[ENTER]
процессы 5 в качестве входных данных, а затем 10 (который является ASCII '\ п') в качестве входных данных, а затем снова запрашивает ввод. Это заводит меня гайками
Добавить фиктивный getchar() в конце цикла while, чтобы потреблять это '\ n' – Pooya
Портативный способ сброса stdin - 'int c; while ((c = getchar())! = '\ n' && c! = EOF); '. 'fflush (NULL)' не будет очищать 'stdin', потому что стандарты говорят, что' fflush (stdin); 'is Undefined Behavior. –
вы просто вычитали '' 0'' из 'input'. После этого вы проверяете это * результирующее значение * на 'e' или' \ n', поэтому, если вы нажмете ':', оно сделает условие true –