奇怪的错误,将char与字符串进行比较(p =="cancel")

ter*_*ing 0 c if-statement char

我正在尝试做一个基本的if语句,我的字符串出现了这个奇怪的错误.

错误1:

指针和整数之间的比较('int'和'char*')

错误2:

未指定与字符串文字进行比较的结果(改为使用strncmp)

这是函数的副本全部发生在.

int logOn(int *par)
{
    char p;
    printf("Log into student records system\nEnter password or type cancel to leave\n>");
    scanf("%s", &p);

        if(p == *PASSWORD1 | p ==  *PASSWORD2 | p ==  *PASSWORD3)
        {
            *par = 2;
        }
        else if (p = "cancel")
        {
            *par = 3;
        }
        else
        {
            printf("\nIncorrect password try again\n");
        }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

else if语句行(p = "cancel")上发生错误.

Joh*_*ica 7

这里有很多不妥之处.

  1. 要比较值,请==不要使用=.
  2. 逻辑运算符||不是|.
  3. char p为单个角色腾出空间.您不能在char变量中存储多字符密码.你需要一个字符串.
  4. 你无法比较字符串==.p == *PASSWORD1不行.我会留给你找出有效的方法.它很容易搜索.