Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/46: Рейтинг темы: голосов - 46, средняя оценка - 4.65
64 / 64 / 17
Регистрация: 25.08.2008
Сообщений: 178
1

Распознать символ забоя

26.06.2011, 21:16. Показов 8582. Ответов 5
Метки нет (Все метки)

Доброго всем времени суток, уважаемы епрограммисты!

Вот решил освоить С по книге Кернигана и Ричи, а там задача:

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

Проблема, программа не отлавливает символ забоя. Прошу помочь:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
main()
{
    int c;     
        
    for(;(c=getchar())!= EOF;)
    {
        if(c=='\t')
            printf("\\t");
        else if(c=='\b')
            printf("\\b"); 
        else if(c=='\\')
            printf("\\s");
        else 
            printf("%c",c);
    }  
    
    getch();      
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.06.2011, 21:16
Ответы с готовыми решениями:

Как принимать литеру забоя (backspace) через getchar()?
Возник вопрос: как вообще ловить литеру забоя? она просто не воспринимается инструкцией getchar(),...

Распознать нарисованный символ
Есть некоторое изображение Img_1.ico с изображением символа 'М' как или каким образом возможно...

Как распознать символ char?
Добрый день. Мне нужно узнать, какой именно символ типа char используется для разделения строки,...

Не получается распознать символ + или - из string
не могу распознать символ + - * / в строке if(array &gt;= '0' and array &lt; '9') { работает...

5
19 / 19 / 5
Регистрация: 26.05.2011
Сообщений: 65
26.06.2011, 21:50 2
и не отловит
Мне кажется следующий вариант больше подходит условию задачи
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <conio.h>
 
void main()
{
    char c; 
    for(;(c=getch())!= '0';)
    {
        if(c=='\t')
            printf("\\t");
        else if(c=='\b')
            printf("\\b"); 
        else if(c=='\\')
            printf("\\s");
        else 
            printf("%c",c);
    }  
}
2
1184 / 540 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
26.06.2011, 22:33 3
MikkiMouse, если нажать DEL то печатает pS, непонятно только почему.
0
64 / 64 / 17
Регистрация: 25.08.2008
Сообщений: 178
27.06.2011, 13:18  [ТС] 4
Конечно MikkiMouse огромное спасибо, все замечательно работает.

Но все же интересно, как это можно реализовать с помощью getchar(), EOF и int c (а не char c), т.к. в книге про getch() еще не рассказывалось, а я применяю его только что бы задержать закрытие консоли после окончания работы программы.

Прошу помочь разобраться! Заранее всем благодарен
0
Higher
1946 / 1212 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
27.06.2011, 15:15 5
Я сомневаюсь, что такое возможно с помощью стандартных средств.
Символ забоя - это ведь тупо backspace.
0
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 2
03.08.2015, 09:52 6
# ./do_visible
\ ^H^H
\t\\\t\t\t\b\b

# cat do_visible.c
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
main()
{
    int c;
    while ((c=getchar()) != EOF) {
        if (c == '\t') printf("%s","\\t");
        else if (c == '\b') printf("%s","\\b");
        else if (c == '\\') printf("%s","\\\\");
        else putchar(c);
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.08.2015, 09:52

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Обработка забоя в консоли
вот есть метод, который пускает в консоль только числа и '-' Но в консоли на запрос можно...

Как правильно написать редактирование ячейки DataGridView, если она редактируется в режиме забоя?
Ну то есть надо так сделать, чтобы, например длина содержимого ячейки была не больше, например 7; ...

Функция принимает блоки данных (символ1, символ 2, строка), в каждой строке заменять символ 1 на символ 2
функция принимает блоки данный(символ1, символ 2 , строка), в каждом строке заменять символ 1 на...

Вывести строки, в которых символ «*» встречается не менее 2 раз и заменить символ «*» на символ «_»
День добрый. Имеется условие лабы. Написать программу, в которой с клавиатуры вводится до 10...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.