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

时间:2012-05-18 11:42:36

标签: c string char

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

在Java中,我可以这样做:

String.indexOf()

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

2 个答案:

答案 0 :(得分:12)

如果您需要搜索某个角色,可以使用strchr功能,如下所示:

char* pPosition = strchr(pText, '|');
如果找不到给定的字符,

pPosition将为NULL。例如:

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

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

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

如果您想要的是字符串中字符的索引,请在此处查看this post。您可能还需要IndexOfAny()之类的内容,here SO上的其他帖子,其中使用strnspn

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

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

答案 1 :(得分:3)

strchr是你的朋友。

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

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

     

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

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