我正在使用 ||
,这样如果用户输入 Y
或 y
,它们的效果是一样的。示例:(option=='y' || option =='Y')
我知道有一个函数可以解决这个问题,以便用户输入 Y
或 y
相同。
执行此操作的最佳方法是什么?
最佳答案
假设option
是char
类型,你可以替换
if (option == 'y' || option == 'Y')
通过
if (tolower((unsigned char)option) == 'y')
转换为 unsigned char
是必要的。 tolower
采用 int
类型的参数,其值必须在 unsigned char
范围内或等于 EOF
(通常为 -1
)。如果普通 char
碰巧被签名(这很常见)并且如果 option
的值恰好为负(如果输入不正常则可能发生),那么 tolower(option)
会有未定义的行为。
(是的,强制转换的需要令人讨厌且违反直觉。是的,tolower()
应该接受char
范围内的任何参数>. 是的,你仍然需要处理它。)
其他可能性:
option = tolower((unsigned char)option);
if (option == 'y') ...
或
switch (option) {
case 'y': case 'Y': ...
...
}
switch
解决方案仍然针对 'y'
和 'Y'
进行测试,但它不那么冗长;您不必多次提及 option
。当然,您也可以切换
tolower((unsigned char)option)
。
关于c - 摆脱||或者在 C 编程中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39982010/