Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка символа забоя 
V
    Опции темы
student80
Дата 1.9.2010, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Абучю рускаму язаку
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 504
Регистрация: 18.4.2006

Репутация: нет
Всего: 7



Всем привет.
Вот изучаю С по книжке. Только на одном задании никак не пойму, что делать.
Нужно копировать ввод в вывод с обработкой символов.
Все символы обрабатываю, кроме символа забоя - это который возвращает каретку на 1 символ влево. Так вот по этому символу у меня и вопросы.
1. Допустим, что вводится последовательность 12\b34, то на выходе должно получиться 134 или 1342?
2. Как вообще ввести этот символ забоя? Используется функция getchar().
3. В веденных символах мне нужно заменить символ забоя какой-нибудь буквой, например X. Тогда при обработке символов мне нужно отменить ввод символа забоя и вывести вместо него X, но чтобы отменить символ забоя, каретку нужно передвинуть вправо. Есть такой символ, переводящий каретку вправо?
PM MAIL   Вверх
djamshud
Дата 1.9.2010, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



1. 134
2. Ввести на stdin?
Код

echo -e "12\b34" | ./myprogram

Это в никсах, в винде как-то похоже должно быть.
3. Ничего не надо делать с кареткой. Она "передвигается" позже - во время вывода в терминал.

См. пример:

Код

#include<stdio.h>

int main(){
size_t s;
char buf[10];
while((s=fread(buf,1,sizeof(buf),stdin))>0){
for(size_t i=0;i<s;i++)
if(buf[i]=='\b')buf[i]='X';
printf("%.*s",s,buf);}
return 0;}


Добавлено через 36 секунд
Код

gcc stdin.c -o stdin -std=c99 && echo -e "12\b34" | ./stdin 
12X34



--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
student80
Дата 1.9.2010, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Абучю рускаму язаку
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 504
Регистрация: 18.4.2006

Репутация: нет
Всего: 7



Цитата

echo -e "12\b34" | ./myprogram

вводится smile
а когда у меня в консоли getchar() ждет ввода символов с клавиатуры, то как тогда символ вводить?
сижу в линуксе через SSH
PM MAIL   Вверх
djamshud
Дата 1.9.2010, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Да, я как-то и позабыл, что на stdin можно и с клавиатуры писатьsmile.

Фиг знает, но задача предполагет написание программы для конвеерной обработки текста, т.е.:

smth1 | myprogram | smth2

Так что не стоит заморачиваться с вводом текста с клавиатуры.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
xvr
Дата 1.9.2010, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(student80 @  1.9.2010,  13:11 Найти цитируемый пост)
а когда у меня в консоли getchar() ждет ввода символов с клавиатуры, то как тогда символ вводить?
Перевести терминал в raw mode (команда stty raw) и запускать свою прогу


PM MAIL   Вверх
student80
Дата 2.9.2010, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Абучю рускаму язаку
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 504
Регистрация: 18.4.2006

Репутация: нет
Всего: 7



Программа как раз предполагает ввод символов с клавиатуры smile
Но это - не суть, я и через конвеерную обработку сделаю.

xvr, с режимом raw вообще ничего ввести не могу и выйти из него не могу smile

Символ обрабатывать научился. Всем спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.