c - 检查C中的不同字符
问题描述
我想知道在 c 中是否有一种方法可以检查,例如在 for 函数中,变量是否等于或不等于某些字符,而不必每次都重复进行相等检查。如果我没记错的话,以这种方式检查相等性是不正确的:
if (a == ('\n' || '\t' || ' ' || ',' || '.' || ';' || ':' || '!' || '?')) {
execute certain action;
}
你需要有一个无穷无尽的a == '\n' || a == '\t' || ...
. 我想知道是否有一种更短(更简洁)的方法来检查符号列表的相等性,因为当a
你没有更具描述性的东西时,这段代码就会变得一团糟。另外,如果您能向我解释为什么第一部分是错误的,我将不胜感激。
解决方案
您可以使用strchr()
来搜索字符串中的字符。
#include <string.h>
if (strchr("\n\t ,.;:!?", a) != NULL) {
// execute certain action
}
您的尝试不起作用的原因是该||
运算符正在使用布尔运算组合其所有操作数OR
,并返回一个布尔值。x || y
如果其中一个x
或y
非零,则为真。所以你的测试基本上等同于
if (a == 1)