Хорошо, у меня есть код для обрезки дублирующихся символов в строке, основанный на здесь .Хорошо, я изменил, чтобы стать так:
void rem_dup(char str[]){
int char_check=0;
int i,j;
char ch;
char filterstr[256]; /* store the temporary strings */
/* check from 1st character in the string */
while(str[char_check]) {
ch = str[char_check];
i = j = char_check+1;
filterstr[0] = str[0]; // added
/* logic to remove the repeated character */
while(str[i]) {
if(str[i] != ch) {
filterstr[j] = str[i]; //modifid
j++;
}
i++;
}
filterstr[j]='\0'; //modified
str = filterstr; //added
char_check++;
}
printf("String after removing duplicates : %s\n",str); this
}
И я реализую это, выполнив простой скрипт
int main(){
char Q[20];
char E[26];
fgets(Q,sizeof(Q),stdin);
fgets(E,sizeof(E),stdin);
rem_dup(Q);
rem_dup(E);
printf("\n%s\n%s\n",Q,E);
return 0;
}
Я ожидаю, что результат будет выглядеть так
0101010101
ababababab
String after removing duplicates : 01
String after removing duplicates : ab
01
ab
Однако выходной результат станет следующим:
0101010101
ababababab
String after removing duplicates : 01
String after removing duplicates : ab
0101010101
ababababab
Как видите, реальность такова, что Q и E не обрезаются вообще.Если параметры массива являются параметрами по ссылке, и как такое могло случиться со мной ??У кого-нибудь есть ответ на этот вопрос?Я искал много источников и пробовал эту единственную проблему, но всегда терпел неудачу.Спасибо за ответ или просто за мнение.