c中的Scanf跳过字符

问题描述 投票:-1回答:1
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;
}

为什么此代码无法正常工作,它读取第一个和第二个数字,但不读取中间的字符。

c scanf
1个回答
1
投票

使用scanf()很困难。在这里,您在第一个数字之后按Enter键后,stdin上还有一个换行符。所以,这就是你读的字符。某些格式转换会忽略空格,但%c不会。

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

scanf(" %c", &oper);

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

© www.soinside.com 2019 - 2024. All rights reserved.