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

时间:2015-06-13 02:48:47

标签: 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;
}

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

2 个答案:

答案 0 :(得分:7)

这里有很多问题。

  1. 要比较值,请使用==而不是=
  2. 逻辑运算符为||而非|
  3. char p为单个角色腾出空间。您无法在char变量中存储多字符密码。你需要一个字符串。
  4. 您无法将字符串与==进行比较。 p == *PASSWORD1无法工作。我会留给你弄清楚它有什么作用。它很容易搜索。

答案 1 :(得分:1)

用于比较字符串的函数位于编译器本身抛出的错误中。 (查找您发布的错误2中的函数并为其进行谷歌搜索。)