Я пытаюсь сделать базовый оператор if, и я получаю эту странную ошибку с моей строкой.Weird error, сравнивая char с строкой (p == "cancel")
Ошибка 1:
Сравнение между указателем и целого числа ('INT' и 'символ *')
Ошибка 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"
).
p = "cancel" присваивает "отменить" на p вместо сравнения. Измените его на p == "cancel" – user2182349
'==' как указано выше. Кроме того, 'p' является' char', '" cancel "' является символом 'char *', они не будут равны. Вы имеете в виду 'p', чтобы быть' char * '? Вы должны использовать 'strcmp', чтобы сравнить строки. – twentylemon
Этот код предназначен для неопределенного поведения. Вы читаете строку символов через '% s' в * single *' char'. Имея только пространство для одного элемента (и это лучше * - это оконечный терминатор nullchar), это означает, что 'scanf' будет действителен только в том случае, если в результате чтения строки не будет * length *. – WhozCraig