c - 如何在 c 中输入字符时排除 'enter'?

标签 c char

<分区>

#include<stdio.h>
int main()
{
    printf("Enter a : ");
    scanf("%c",&a);
    printf("Enter b : ");
    scanf("%c",&b);
    printf("Enter c : ");
    scanf("%c",&c);
    printf("Enter d : ");
    scanf("%c",&c);
}

输出:

C:\Users\Saran\Desktop>gcc new.c
C:\Users\Saran\Desktop>a
Enter a : s
Enter b : Enter c : c
Enter d :

如果这是我的代码,它会将第一个字符放入变量“a”中,然后如果我按回车键,变量“b”会将回车作为其输入。如何克服这个问题?

最佳答案

在C语言中所有的输入操作都是借助ASCII码完成的。 Enter 键有 ASCII 码 10,当你按下 Enter 键然后 scanf("%c",&b)将其转换为 ASCII 并存储 10。打印printf("%d",b)即可看到。

在您的情况下,您可以使用替代输入字符串 getchar() 来处理 Enter 就像

int main() {

    char a,b,c,d;
    printf("Enter a : ");
    scanf("%c",&a);
    getchar();
    printf("Enter b : ");
    scanf("%c",&b);
    getchar();
    printf("Enter c : ");
    scanf("%c",&c);
    getchar();
    printf("Enter d : ");
    scanf("%c",&d);
    printf("\n print a - %c ",a);
    printf("\n print b - %c ",b);
    printf("\n print c - %c ",c);
    printf("\n print d - %c",d);


    return 0;
}

输出:

Enter a : Enter b : Enter c : Enter d :
print a - m
print b - n
print c - 0
print d - p

关于c - 如何在 c 中输入字符时排除 'enter'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43972352/

相关文章:

c - 如何在 C 中比较两个不区分大小写的字符?

用 sed 's//' 复制

c - OpenMP 大大减慢了 for 循环

c++ - 字符 'apex' C++

java - 字符等于空格

c - 为什么这个程序没有给出预期的输出?

c - 在c中实现ls,无限循环

c++ - 在for循环c++中打印字符

c++ - 我如何将 char 数组转换为 int?

c++ - 如何在 C++ 中打印非 ascii-char