在c中跳过字符

在c中跳过字符,c,scanf,C,Scanf,为什么此代码不能按预期工作,它读取第一个和第二个数字,但不读取中间的字符。使用scanf()很难。这里,stdin上有一个换行符,您在第一个数字后按enter键。这就是你读到的角色。某些格式转换忽略空白,但%c不忽略空白 要使其忽略前导空格,应改为使用 int main(){ int firstNumber, secondNumber, thirdNumber; char oper; scanf("%d", &firstNumber); printf("

为什么此代码不能按预期工作,它读取第一个和第二个数字,但不读取中间的字符。

使用
scanf()
很难。这里,
stdin
上有一个换行符,您在第一个数字后按enter键。这就是你读到的角色。某些格式转换忽略空白,但
%c
不忽略空白

要使其忽略前导空格,应改为使用

int main(){
    int firstNumber, secondNumber, thirdNumber;
    char oper;

    scanf("%d", &firstNumber);
    printf("%d\n", firstNumber);

    scanf("%c", &oper);
    printf("%c\n", oper);

    scanf("%d", &secondNumber);
    printf("%d\n", secondNumber);


    return 0;
}

格式字符串中的空格告诉
scanf()
忽略它找到的任何空白,因此您将读取一个非空白字符。

read。您应该测试它的返回计数。阅读也可以定义“奇怪的东西”。我所说的“奇怪”是指它不阅读它,只是略过它,我认为它可能是重复的
scanf(" %c", &oper);