如何检查C字符串中是否存在单个字符?

我想检查单个字符串是否在C字符串中。 字符是'|' 用于Linux中的管道(实际上,我也想检查'<''>''>>''&' )。

在Java中我可以这样做:

 String.indexOf() 

但是如何在C中执行此操作,而不循环遍历整个字符串( char*字符串)?

如果需要搜索字符,可以使用strchr函数,如下所示:

 char* pPosition = strchr(pText, '|'); 

如果找不到给定的字符, pPosition将为NULL 。 例如:

 puts(strchr("field1|field2", '|')); 

将输出:“| field2”。 请注意, strchr将执行向前搜索, 向后搜索可以使用strrchr 。 现在想象(只是为了提供一个例子)你有一个像这样的字符串:“variable:value | condition”。 您可以使用以下内容提取字段:

 char* pValue = strrchr(strchr(pExpression, '|'), ':') + 1; 

如果您想要的是字符串中字符的索引 ,请在此处查看此post 。 你可能也需要像IndexOfAny()这样的东西, 这里有另外一篇关于使用strnspn

相反,如果你正在寻找一个字符串,你可以使用strstr函数,如下所示:

 char* pPosition = strstr(pText, "text to find"); 

strchr是你的朋友。

 char *strchr(const char *s, int c); 

strchr函数定位s指向的字符串中第一次出现的c (转换为char )。

strchr函数返回指向定位字符的指针,如果字符串中没有出现字符,则返回空指针。

当然,在最坏的情况下,函数必须遍历整个字符串(正如Java函数可能做的那样)。