我想检查一个字符是否在 C 字符串中。该字符'|'
用于 Linux 中的管道(实际上,我也想检查'<'
, '>'
, '>>'
, '&'
)。
在 Java 中,我可以这样做:
String.indexOf()
但是我怎样才能在 C 中做到这一点,而不遍历整个字符串(一个char*
字符串)?
如果您需要搜索一个字符,您可以使用该strchr
功能,如下所示:
char* pPosition = strchr(pText, '|');
pPosition
NULL
如果没有找到给定的字符。例如:
puts(strchr("field1|field2", '|'));
将输出:“|field2”。请注意,strchr
将执行向前搜索,要向后搜索,您可以使用strrchr
. 现在想象一下(只是提供一个例子)你有一个这样的字符串:“变量:值|条件”。您可以使用以下方法提取值字段:
char* pValue = strrchr(strchr(pExpression, '|'), ':') + 1;
如果您想要的是字符串中字符的索引,请查看 SO 上的这篇文章。您可能也需要类似的东西IndexOfAny()
,这里是另一篇关于 SO 的帖子strnspn
。
相反,如果您正在寻找一个字符串,您可以使用该strstr
函数,如下所示:
char* pPosition = strstr(pText, "text to find");
strchr
是你的朋友。
char *strchr(const char *s, int c);
该
strchr
函数在 指向的字符串中定位c
(转换为 a ) 的第一次出现。char
s
该
strchr
函数返回一个指向所定位字符的指针,如果该字符不在字符串中,则返回一个空指针。
当然,在最坏的情况下,该函数必须遍历整个字符串(Java 函数可能会这样做)。