C语言如何跳出循环呢?

c语言 控制台输入3个小写字母,输出对应的大写字母,如果输入字符不符合要求,要求能提示错误并重新循环输入,直到输入形式正确后执行大小写转换并退出

img

为什么第一次输入错误后 第二次即使输入正确格式 也会先提示错误再给出转换后的答案呢?

在每个scanf语句值后加一个getchar(),接收到换行符。

img


#include <stdio.h>

int main()
{
    char a, b, c;
    do
    {
        scanf("%c%c%c", &a, &b, &c);    //切记输入字母之间不要加空格,否则空格会被读到变量中

        if (a >= 'a' && a <= 'z' && b >= 'a' && b <= 'z' && c >= 'a' && c <= 'z')
        {
            a -= 32;
            b -= 32;
            c -= 32;
            printf("%c %c %c\n", a, b, c);
            break;
        }
        else
        {
            printf("输入错误,请重新输入:\n");
        }

        //用来清理\n
        getchar();
    } while (1);

    return 0;
}