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