C - 最后一次剪切字符串" /"在字符串中

时间:2017-09-22 11:41:04

标签: c string character cut

在某个特定角色" /"出现在字符串中? 例如: /一/二/三/四将被切入/一/二/三

我在循环中尝试了类似的东西,将其分成多个部分:

substr = strstr(line, "/");
nextSubstr= substr+1; 
length = strlen(line) - strlen(substr);
substr = strndup(line, length);

但我觉得这应该是一种更有效的方法。感谢您的帮助

1 个答案:

答案 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;
}