将字符串设置为C中的子字符串

时间:2011-05-04 23:31:56

标签: c string parsing truncate

我有一个很长的字符串,我想要删除它。我希望在角色“<”之后摆脱一切(包括性)。以下是有效的代码:

char *end;
end = strchr(mystring, '<');
mystring[strlen(mystring) - strlen(end)] = '\0';

所以,如果mystring是

"asdfjk234klsjadflnwer023jokmnasdf</tag>alskjdflk23<tag2>akjsldfjsdf</tag2>blabla"

此代码将返回

"asdfjk234klsjadflnwer023jokmnasdf"

我想知道这是否可以更简单的方式完成?我知道我可以在mystring中的每个字符上增加一个计数器,直到找到“&lt;”然后使用该int作为索引,但这似乎同样麻烦。所有其他内置字符串库似乎没有用,但我确定我只是以错误的方式看待它。我已经多年没用过C.

感谢任何帮助!

4 个答案:

答案 0 :(得分:5)

不确定。这是执行它的惯用方法:

char *end;
end = strchr(mystring, '<');
if (end)
    *end = '\0';

答案 1 :(得分:2)

*end = '\0';而不是mystring[strlen...部分呢?

答案 2 :(得分:1)

char *end;
end = strchr(mystring, '<');
if (end != NULL)
    *end = '\0';

答案 3 :(得分:1)

strchr()返回指向该字符的指针(如果找到),所以:

if(end)
    *end = '\0';