0
我在删除位于另一个字符串开头的子字符串时遇到问题。我已经尝试了2或3个不同的选项,但是当我打印修改过的字符串时,它们都没有工作。你能告诉我我做错了什么,或告诉我其他方式删除子字符串?从C中的字符串开头删除子字符串
这里是我使用的代码:
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);
并请标明问题,以语言标记(c和/或C++) – 2014-12-05 16:05:26
你应该仔细的解释。如果出现在'c'中输入的字符串的开头,我认为你正试图删除在'p'中输入的字符串。如果是这样,你需要从'c'中删除换行符,需要一个锚定的比较(可能是'strncmp()')来实现相等性,然后将'c'匹配后出现的'p'部分复制到(所以'memmove()'是正确的,'memcpy()'通常是不正确的 - 更确切地说,它是不正确的,除非'p'小于'c'的两倍。 – 2014-12-05 16:26:16
谢谢你的帮助! – afsq 2014-12-05 18:31:42