Другие языки программирования и технологии

Символ "Забоя"

Все мы хотим на что-то забить, но не в этот раз.

Напишите программу, копирующую вводимые символы в выходной поток с заменой символа табуляции на \t, символа забоя на \b и каждой обратной наклонной черты на \\. Это сделает видимыми все символы табуляции и забоя.

Подскажите, что это за символ такой, что это вообще, символ забоя? ! BackSpace? Тогда как я его должен заменить на "/b"? Остальное задание понятно и ясно, а вот это ЗАБОЙ, просто хард... .

SOS, хотя вероятность четкого ответа КРАЙНЕ МАЛА
#include <stdio.h>
#include <conio.h>

int main() {
    int c;
    while ( (c = getchar()) != EOF ) {
        switch (c) {
            case '\t': printf("\\t"); break;
            case '\b': printf("\\b"); break;
            case '\\': printf("\\\\"); break;
            default: putchar(c); break;
        }
    }
}

Но символ забоя не получишь стандартными средствами Си, консоль перехватывает Backspace и не отправляет его программе. Можно подготовить файл в котором будет символ \b и перенаправить его на вход программы. Обрати внимание, как один и тот же файл in.txt с символом \b выводит стандартная утилита type и обрабатывает программа выше:



Можно, конечно использовать _getch() из conio.h, и тогда \b поймаешь, но conio.h в стандарт не входит.
Виталий Кудрявцев
Виталий Кудрявцев
72 374
Лучший ответ
>Подскажите, что это за символ такой, что это вообще, символ забоя? ! BackSpace?
Да, это он.

>Тогда как я его должен заменить на "/b"?
Я в плюсах не силен, но по-моему как-то так:

if (c == '\b') cout >> "\\b" >>

В общем, надеюсь, идея ясна.
Можно печатать Ctrl+H
и си поймет что это символ забоя и заменит его на /b