其类型(fgets)的字符常量太长

Ani*_*iar 2 c arrays

void verification() {
    char pass[50];

    printf(" Enter Password : ");
    fgets(pass, 50, stdin);

    if (pass != 'aaanc6400') {   \\ Warning message in here
        printf("\n Invalid Password.. Please enter the correct password. \n\n");
        verification();
    }
    info();
}
Run Code Online (Sandbox Code Playgroud)

当我编译程序时,在标记的行上它显示警告"字符常量对于它的类型太长"以及"指针和整数之间的比较".然后当我运行代码并输入正确的密码时,它仍会输出密码错误.我究竟做错了什么?

xen*_*ros 5

警告是关于你声明你有一个很长的角色.

'aaanc6400'
Run Code Online (Sandbox Code Playgroud)

是一个9个字符长的字符,编译器警告你,它可能是一个打字错误.这是正确的.

在C中,我们'对字符使用单引号,"对字符串使用双引号,字符串是以字符结尾的'\0'字符数组.

所以,你必须更换'aaanc6400'"aaanc6400"和使用strcmp.记得!fgets也可以阅读\n,所以你可以比较输入"aaanc6400""aaanc6400\n".这个解决方案足以满足学生项目的需要.