代码哪出错了,康康昂

8、简单密码检测程序:输入密码与已知密码password进行比较。假如正确,通过break语句跳出循环;否则,系统提示“口令错误,按任意键继续”,不过3次机会,超过3次系统会自动退出程序。

img

第一次输入正确密码,可以识别
但第一次输错,再输入正确密码就会显示错误

我不理解帮帮我吧

在遇到scanf函数的时候,程序并不会马上让你输入数据,程序会先检测输入缓冲区有没有数据,没有了才会让你输入数据。
你在输入一个字符是不是还得按一下回车,这个回车其实也是一个字符,所以他会把回车字符也给存到数组b里面,导致错误。
所以你每输入一个字符就要消除附带的回车字符,也就是把回车字符从输入缓冲区里面拿出来丢掉,就要用到getchar这个函数。
代码如下,望采纳:

int main()
{
    char arr[8] = {'a','b','c','d','e','f','g','h'};
    char brr[8] = {0};
    int i = 0,flag = 0;
    for(int j=0;j<3;j++){
        printf("输入\n");
        int p = 0;
        flag = 0;
        for(i=0;i<8;i++){
            scanf("%c",&brr[i]);
            getchar();  //清除回车符
        }
        for(i=0;i<8;i++){
            if(arr[i] == brr[i])
                ++ flag;
        }
        if(8 == flag){
            printf("正确\n");
            return 0;
        }
        else    
            printf("错误\n");
    }
    printf("错误过多!\n");
    return 0;
}