Напишите программу, копирующую вводимые символы в выходной поток с заменой
символа табуляции на \t, символа забоя на \b и каждой обратной наклонной
символа табуляции на \t, символа забоя на \b и каждой обратной наклонной
черты на \\. Это делает видимыми все символы табуляции и забоя.
$ vim replace.c
#include <stdio.h>
int main(void)
{
int c;
int n; /* если ни один из нужных */
while((c = getchar()) != EOF)
{
n = 0;
if (c == '\t')
{
printf("\\t");
n = 1;
}
if (c == '\b')
{
printf("\\b");
n = 1;
}
if (c == '\\')
{
printf("\\\\");
n = 1;
}
if (n != 1)
putchar(c);
}
return 0;
}
$ cc -g -O0 -Wall -o a.out replace.c
$ ./a.out
Test Test
Test\tTest
Test\Test
Test\\Test
Test \\ Test
Test\t\\\\\tTest
у меня что-то пошло не так (https://codeshare.io/aynDDv), консоль Убунту выводит в ответ на:
ОтветитьУдалить21 12 32
вот это:
21 12 32
то бишь тупо удваивает табуляцию. причем на ctrl-d реагирует, как и в прошлом примере, со второго раза.
в комментах табуляция не видна. В общем, вывод не соответствует ожиданию: вместо замены эскейп-последовательности на ее обозначение код удваивает ее почему-то.
ОтветитьУдалить