我有一个很长的字符串,我想要删除它。我希望在角色“<”之后摆脱一切(包括性)。以下是有效的代码:
char *end;
end = strchr(mystring, '<');
mystring[strlen(mystring) - strlen(end)] = '\0';
所以,如果mystring是
"asdfjk234klsjadflnwer023jokmnasdf</tag>alskjdflk23<tag2>akjsldfjsdf</tag2>blabla"
此代码将返回
"asdfjk234klsjadflnwer023jokmnasdf"
我想知道这是否可以更简单的方式完成?我知道我可以在mystring中的每个字符上增加一个计数器,直到找到“&lt;”然后使用该int作为索引,但这似乎同样麻烦。所有其他内置字符串库似乎没有用,但我确定我只是以错误的方式看待它。我已经多年没用过C.
感谢任何帮助!
答案 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';