如何检查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函数可能做的那样)。