程序无法比较字符 (C)



程序中的一个函数没有执行if语句,我不知道为什么。我检查了是否是一个因素,但不是。这不是检查字符是否为特定值的正确方法吗?

void kitColour() {
printf("Enter the kit colour: ");
scanf("%s", &database[currentStorage].colours);
char *inputColour = database[currentStorage].colours;
printf("%s", inputColour);
// check if ROYGBIV
if (inputColour == 'R') {
printf("letter is R");
}
// skips previous if statement and executes this one
if (strlen(inputColour) == 1) {
currentStorage++;
mainMenu();
}
printf("Only the values 'R', 'O', 'Y', 'G', 'B', 'I', 'V' are acceptable.n");
kitColour();
}

我尝试将用户输入与值"R"进行比较,但它不执行if语句。我希望它能打印出";字母是R";。相反,它跳过if语句,继续执行程序。

在此if语句中

if (inputColour == 'R') {

左侧操作数CCD_ 1由于其声明而具有指针类型CCD_

char *inputColour = database[currentStorage].colours;

也就是说,您正在尝试将指针与字符进行比较。

你应该至少写

if ( *inputColour == 'R') {

此外,如果表达式database[currentStorage].colours的类型是char,则必须使用转换说明符c,而不是像那样使用s

scanf( " %c", &database[currentStorage].colours );

然后

char inputColour = database[currentStorage].colours;

注意格式字符串中的前导空格。它允许跳过空白字符。

否则你必须写

scanf( "%s", database[currentStorage].colours );

相关内容

  • 没有找到相关文章

最新更新