【发布时间】:2015-08-29 03:26:52
【问题描述】:
我正在尝试做一个基本的 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") 发生错误。
【问题讨论】:
-
p = "cancel" 将 "cancel" 分配给 p,而不是比较它。将其更改为 p == "取消"
-
==如上所述。此外,p是char,"cancel"是char*,它们不会相等。你的意思是p成为char*吗?您应该使用strcmp然后比较字符串。 -
该代码注定会出现未定义的行为。您正在通过
%s将一串字符读入 singlechar。只有一个元素的空间(它更好是空字符终止符),这意味着scanf只有在读取的结果字符串没有长度时才有效。
标签: c if-statement char