17

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

在 Java 中,我可以这样做:

String.indexOf()

但是我怎样才能在 C 中做到这一点,而不遍历整个字符串(一个char*字符串)?

4

2 回答 2

25

如果您需要搜索一个字符,您可以使用该strchr功能,如下所示:

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

pPositionNULL如果没有找到给定的字符。例如:

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");
于 2012-05-18T11:44:49.917 回答
4

strchr是你的朋友。

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

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

strchr函数返回一个指向所定位字符的指针,如果该字符不在字符串中,则返回一个空指针。

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

于 2012-05-18T11:45:56.560 回答