2012-06-01 59 views
3

我需要做的是找到某个字符串在什么位置,并且只保留后面的内容。字符串在C中查找

伪代码:

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

回答

21

strstr你想要做什么。即找到子字符串。

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

如果STR2不是STR1的一部分将指针返回到STR2的在STR1的第一次出现,或空 指针。

对于你的榜样,

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

或者,如果你想字符串分割成基于像::使用的分隔符令牌可以使用strtok

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

字符串分割到令牌

对此函数的调用序列将str拆分为令牌,它们是 由作为分隔符的一部分的任何字符 分隔的连续字符的序列。

对于你的榜样,

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

strtok是在它会修改你的令牌化的字符串,也不会重新rentrant意义上的棘手功能。这里是一个nice article解释使用strtok

+0

谢谢!我试图在过去一小时内找到解决方案。 – ntrp

+0

@ntrp很高兴,我可以帮忙! –