c语言输入法

Input in c language

为什么我无法在我的 C 程序中进行第三次字符输入??

#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);
}

scanf("%c",&ch);

输入 float 值并按下 enter 后,scanf 会读取额外的换行符 \n。为了防止使用这个:

scanf(" %c",&ch);

Space 在 %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(\n 的 ASCII)。

解决方案

#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