首页 > 解决方案 > c语言输入法

问题描述

为什么我不能在我的 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);
}

标签: cinputoutputscanf

解决方案


scanf("%c",&ch);

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

scanf(" %c",&ch);

Space before%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 of \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

推荐阅读