Как сделать обработку обратного пространства для строки в C? Вот простой пример того, что я написалКак сделать обратную обработку в C
char buf[1024]="D,e,Bs,a,t,e" \\*Bs means Backspace
char tmp[1024];
int j,n;
n=0;
sprintf(tmp,"%s",buf);
for(j=0;tmp[j] !='\0';j++)
{
if ((tmp[j] == '\x08') || (tmp[j] == 127))
{
j++;
n--;
}
buf[n] = tmp[j];
n++;
}
buf[n] = '\0';
printf("%s",buf);
Это напечатает = Date
Но если ЬиЕ имеют более 1 Bs, пример
char buf[1024] = "D,e,e,Bs,Bs,a,t,e"
Выход будет = DeBsate
Функция найдет только 1 обратное пространство. Зачем? Поскольку j увеличиваются после обработки первых Bs и игнорируются, проверяя Bs после этого. Конечно, если проверка на терминале, выход - это дата. Но если я запишу отладку только для того, чтобы увидеть строку внутри buf. Второй Bs все равно будет там. Это не так. Как изменить эту функцию?
Ответ в вопросе. –
C имеет escape-последовательность для backspace - '\ b' - почему вы пытаетесь сделать это вручную? – Graeme
Рома-МТ: Я не получаю ваш комент. Не возражаешь, чтобы немного его обработать? –