scanf("%c",&ch);
После ввода значения float
и нажатия enter
, scanf
читает этот дополнительный символ новой строки \n
. Чтобы предотвратить это, используйте это:
scanf(" %c",&ch);
Пробел перед %c
означает, что лишнее \n
и нужный символ будет сохранен в ch
.
Чтобы продемонстрировать это, см. код ниже:
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
float f1;
scanf("%f", &f1);
char ch;
scanf("%c", &ch);
printf("Integer %d\nfloat %f\ncharacter %d", a, f1, ch); // changed to %d to print ASCII value
}
Результат:
12
12.3
Integer 12
float 12.300000
character 10
Вы можете увидеть вывод здесь, он печатает 10 (ASCII из \n
).
Решение :
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
float f1;
scanf("%f", &f1);
char ch;
scanf(" %c", &ch);
printf("Integer %d\nfloat %f\ncharacter %c", a, f1, ch);
}
Выход :
12
12.3
k
Integer 12
float 12.300000
character k