これは、文字列の重複を削除しようとする試みであり、2 つの質問があります。
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;
}
}
}
最初: 表示されないのに何が間違っているのでしょうか? 私はこの例を本で見つけましたが、それは理にかなっていると思います。重複した文字が削除されないのはなぜですか?
2番目:関数を呼び出すとき、次のようにすると:
char duplicated[] = "aba";
removeDuplicates(duplicated);
エラーは発生しません。しかし、私がそれを行うと:
char *duplicated = "aba";
removeDuplicates(duplicated);
私Bus error: 10
は実行時間を取得します。