检查 C 中的不同字符

Jav*_*ría 2 c c-strings char kernighan-and-ritchie

我想知道在 c 中是否有一种方法可以检查,例如在 for 函数中,变量是否等于或不等于某些字符,而不必每次都重复进行相等检查。如果我没有错,以这种方式检查相等性是不正确的:

if (a == ('\n' || '\t' || ' ' || ',' || '.' || ';' || ':' || '!' || '?')) {
     execute certain action;
}
Run Code Online (Sandbox Code Playgroud)

你需要有一个无穷无尽的a == '\n' || a == '\t' || .... 我想知道是否有一种更短(更干净)的方法来检查符号列表的相等性,因为当a你有更具描述性的东西时,这段代码就会变得一团糟。另外,如果您能向我解释为什么第一部分是错误的,我将不胜感激。

Bar*_*mar 5

您可以使用strchr()搜索字符串中的字符。

#include <string.h>

if (strchr("\n\t ,.;:!?", a) != NULL) {
    // execute certain action
}
Run Code Online (Sandbox Code Playgroud)

您的尝试不起作用的原因是该||运算符使用布尔OR运算组合其所有操作数,并返回一个布尔值。x || y如果xy非零,则为真。所以你的测试本质上等同于

if (a == 1)
Run Code Online (Sandbox Code Playgroud)