如何从c中的字符串中删除片段?
例如:
int main()
{
char *string = "Qwertyuio pasdf ghjklzxcv bnm";
char *fragment = "pasdf";
}
如何剪切pasdf但保存其他?
答案 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;
}