Я не думаю, что эта функция делает то, что вы хотите.Цикл удаления действительно подозрительный ... вы уменьшаете i
, что выглядит неправильно ... и вы увеличиваете j
, что, вероятно, также неправильно:
while(str[j]!='\0')
{
printf("\nRemoving %c %d -- \n",str[j]);
str[j] = str[++j]; // now the new character is at location j, but since
// you incremented j you can't access it anymore
--i; // why is i dependent on the remove stuff?
}
Я бы пошел по более простому подходу.Создайте большой массив bool.Проходите по вашей строке и сохраняйте, встречали ли вы уже текущий символ или нет.Если нет, распечатайте его.