程序中的一个函数没有执行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 );