在C语言中查找字符串

5

我需要做的是找到特定字符串所在的位置,并仅保留其后面的内容。

伪代码:

string1 = "CDSDC::walrus"
string2 = "::"
string3 = (substr( string1, strfind(string1, string2) + 2 )) // +2 being the len of str2
// at this point I want string3 == "walrus"
1个回答

24

strstr可以帮你实现所需的功能,即定位子字符串。

const char * strstr ( const char * str1, const char * str2 );

返回指向str1中第一个出现的str2的指针,如果str2不是str1的一部分,则返回null指针。

以您的示例为例:

char *string3 = strstr(string1,"walrus")

或者,如果你想根据分隔符(例如::)将字符串拆分为标记,可以使用strtok

char * strtok ( char * str, const char * delimiters );

将字符串分割成标记

调用此函数的序列将str分割为标记,这些标记是由定界符中任何字符分隔的连续字符序列。

以您的示例为例,

strtok(string1, "::");
string3 = strtok(NULL,"::")

strtok 是一个棘手的函数,因为它会修改您正在分词的字符串,并且也不是可重入的。这里有一篇好的文章解释了使用 strtok 的总体方面。


链接到cplusplus的已经失效了,这里提供更新后的strstrstrtok链接。 - xdavidliu
@xdavidliu 谢谢!我已经修复了答案中的损坏链接。 - Pavan Manjunath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接