Разница между функциями getch () и scanf ()

У меня были трудности при выполнении следующего кода. Переменная ‘t’ принимает нулевое значение после завершения одного выполнения. Проблема была решена с помощью getch () вместо scanf (). Но я не знаю, почему это происходит. Есть объяснения?
Это программа, которая не сработала.

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
char t;
void main()
{
while(1)
{
scanf("%c",&t);
printf("\nValue of t = %c",t);
printf("\nContinue (Y/N):");
char a=getche();
if(a=='n' || a=='N')
exit(0);
}
}

Теперь это программа, которая выполняется правильно.

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
char t;
void main()
{
while(1)
{
t=getch();
printf("\nValue of t = %c",t);
printf("\nContinue (Y/N):");
char a=getche();
if(a=='n' || a=='N')
exit(0);
}
}

-1

Решение

Когда вы читаете персонаж,

scanf("%c",&t);

во входном потоке осталась новая строка, которая заставляет последующую функцию scanf () пропускать ввод в цикле.

Обратите внимание, что getch() это нестандартная функция. Ты можешь использовать getchar() вместо.

Или измените его на:

scanf(" %c",&t);

Обратите внимание на пробел в спецификаторе формата, который гарантирует, что все пробелы пропускаются функцией scanf () перед чтением символа для %c,

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]