如何从字符串中删除片段

时间:2017-04-09 15:42:06

标签: c

如何从c中的字符串中删除片段?

例如:

int main()
{
  char *string = "Qwertyuio pasdf ghjklzxcv bnm";
  char *fragment = "pasdf";
}

如何剪切pasdf但保存其他?

1 个答案:

答案 0 :(得分:0)

在您的示例中,您无法更改string的内容。

以下是如何正确地做到这一点:

#include <stdio.h>
#include <string.h>

int
main()
{
  char *string = strdup("Qwertyuio |pasdf| ghjklzxcv bnm");
  char *fragment = "pasdf";
  char *w = string;
  int length = strlen(string);

  printf("%s\n", string);
  while (*w)
    {
      if (!strncmp(w, fragment, strlen(fragment)))
        {
          length -= strlen(fragment);
          memmove(w, w + strlen(fragment), length);
        }
      else
        {
          w++;
          length--;
        }
    }
  *w = 0;
  printf("%s\n", string);
  free(string);
  return 0;
}