這是我嘗試刪除一個字符串的重複,我有兩個問題:刪除字符串中的重複項。我錯過了什麼?
void removeDuplicates(char *original_string)
{
if(original_string == NULL) {
return;
}
int len = strlen(original_string);
if (len < 2) {
return;
}
int tail = 1;
int i;
for (i = 1; i < len; i++) {
int j;
for (j=0; j < tail; j++) {
if (original_string[i] == original_string[j]) {
break;
}
}
if (j == tail) {
original_string[tail] = original_string[i];
++tail;
}
}
}
第一:我在做什麼錯了,我沒有看到?我在一本書中找到了這個例子,我相信這很有道理。爲什麼重複的字符不被刪除?
二:當調用函數,如果我這樣做:
char duplicated[] = "aba";
removeDuplicates(duplicated);
我沒有得到一個錯誤。但是,如果我這樣做:
char *duplicated = "aba";
removeDuplicates(duplicated);
我在運行時得到一個Bus error: 10
。
可能重複(HTTP:/ /stackoverflow.com/questions/164194/why-do-i-get-a-segmentation-fault-when-writing-to-a-string) –
我的問題不只是關於錯誤,但爲什麼該功能不起作用。 –
我在你的問題中沒有看到任何這樣的提及。你說'當我做第一個時,我沒有得到錯誤,而第二個錯誤。你沒有說過它是否有效。你希望我們編譯和驗證功能嗎? –