首页 > 解决方案 > 检查C中的不同字符

问题描述

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

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

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

标签: ccharc-stringskernighan-and-ritchie

解决方案


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

#include <string.h>

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

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

if (a == 1)

推荐阅读