gpt4 book ai didi

c - C 中从字符串开头删除子字符串

转载 作者:行者123 更新时间:2023-11-30 17:24:08 26 4
gpt4 key购买 nike

我在删除位于另一个子字符串开头的子字符串时遇到问题。我尝试了 2 或 3 个不同的选项,但当我打印修改后的字符串时,它们似乎都不起作用。你能告诉我我做错了什么或者告诉我其他删除子字符串的方法吗?

这是我使用的代码:

    int i;char *c,*p;
c= malloc(200*sizeof(char));
fgets(c,200,stdin);
p=malloc(200*sizeof(char));;
fgets(p,200,stdin);
if (strstr(c,p) != NULL)
{
if ((strlen(c)-strlen(p))>2)
{
c= c+strlen(p);
//memmove(c,c+strlen(p),strlen(c)-strlen(p)+1);
}
}
printf("%s \n",c);

最佳答案

您必须存储/记住 strstr() 调用的结果,它是字符串中子字符串所在的位置

据我所知,您对 strlen 的操作是无用的,并且分配给 c 是错误的,因为您丢失了指向堆字符串的指针,这肯定是内存泄漏

更新

类似的东西

char* r = NULL; // result to be stored here
char* q = strstr(c, p);
if (q != NULL)
{
r = malloc(200);
strcpy(r, q);
}
if (r)
printf("%s \n", r);

// cleanup
if (r)
free(r);
free(c);
free(p);

关于c - C 中从字符串开头删除子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27319390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com