Ниже приведен код C, который я пытался удалить повторяющийся символ в строке, но он не работает должным образом, он застревает в комментарии застрял. Пожалуйста, помогите мне понять, что я делаю неправильно?Как удалить дубликат из строки в c?
void removeDupliacte(char *str)
{
int bitset=0;
int value= 0;
char *tail = str;
char temp;
int i=0;
while(*str)
{
value = *str - 'a';
if(bitset & (1 << value) > 0)
{
str++;
}
else
{
bitset |= 1 << value;
temp = *str;
tail[i] =temp; /*stuck*/
i++;
str++;
}
}
tail[i++] = '\0';
}
int main()
{
char *str = "abac";
removeDupliacte(str);
printf("%s",str);
return 0;
}
Это: 'if (bitset & (1 <0)' в вашем цикле while не может быть прав. Он всегда будет оценивать значение 0, то есть 'false'. Я посмотрю на остальное, но определенно –
Я думаю, что он, вероятно, должен быть, если ((bitset & (1 << value)) > 0) из-за> с более высоким приоритетом, чем &. –