多字符比较,我怎样才能更聪明地编写它?

时间:2014-10-27 17:46:32

标签: c coding-style char

我正在解析文本文件。在解析时,我想跳过某些字符(空格,换行符,逗号,句点)。在PHP中,可以使用in_array(char, array)检查数组中是否存在变量,但鉴于我们使用指针,事情明显不同。

我目前正在写这样的(借口奇怪的格式化)

if (c == ' '  || 
    c == '\n' || 
    c == '.'  || 
    c == ',') {

  continue;
}

但感觉有点愚蠢。是否有更聪明/更紧凑的方式来执行这样的多重比较?

3 个答案:

答案 0 :(得分:3)

试试这个:

switch(c) {
  case ' ':
  case '\n':
  case '.:
  case ',':
    continue;
}

答案 1 :(得分:2)

另一种选择是使用strchr检查给定字符是否在给定字符串中:

if (strchr(" \n.,", c)
    continue;

答案 2 :(得分:1)

使用函数并传递带有字符的字符串:

_Bool Check( char a , char* str )
{
    while( *str )
    { 
        if( *str == a )
        {
            return true ;
        }

        str++ ;
    }

return false ;
}

Check( c , ",.\n " ) ;