我正在编写一个接受字符串变量的错误检查函数,我需要它是"Y"、"N"、"y"或"n"之一。我的问题是字符串变量总是设置为"y",表明无论变量接收什么输入,if 语句都不会通过第一个条件。如果有一个明显的错误,例如我在使用"||"运算符时,如果有人能让我知道,这将对我有很大帮助。
if (string == "y" || "Y") { //If 'yes'...
string = "y"; //Standardise input for later use
return 1; //Error check successfully passed
}
else if (string == "n" || "N") { //If 'no'...
string = "n"; //Standardise input for later use
return 1; //Error check successfully passed
}
else { //If erroeneous input...
return 0; //Error check not passed
}
string == "y" || "Y"
不会做你认为它做的事情:它将string
与"y"
进行比较,然后用"Y"
或结果。因为"Y"' is non-zero, it always evaluates to
真的'。
正确的代码是:
string == "y" || string == "Y"
您也可以将"string"转换为char "c",并使用tolower(c(函数,您可以在相同的条件下与"y"和"n"进行比较,因为两种情况下您的返回值相同。
还有提升::to_lower(数据(选项;