在某个特定角色" /"出现在字符串中? 例如: /一/二/三/四将被切入/一/二/三
我在循环中尝试了类似的东西,将其分成多个部分:
substr = strstr(line, "/");
nextSubstr= substr+1;
length = strlen(line) - strlen(substr);
substr = strndup(line, length);
但我觉得这应该是一种更有效的方法。感谢您的帮助
答案 0 :(得分:2)
是的,使用标准函数strrchr()
查找最后一次出现:
void truncate_at_last(char *s, char t)
{
char * const last = strrchr(s, t);
if(last != NULL)
*last = '\0';
}
上面修改了字符串,只需在t
(和t
本身)的最后一个实例之后切掉部分。如果你想要一个新的字符串,你当然需要分配和复制:
char * get_prefix(const char *s, char t)
{
const char * last = strrchr(s, t);
if(last != NULL)
{
const size_t len = (size_t) (last - s);
char * const n = malloc(len + 1);
memcpy(n, s, len);
n[len] = '\0';
return n;
}
return NULL;
}