| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > "Переделывание" букв в что-то другое |
| Автор: mr.Anderson 9.3.2006, 20:33 | ||||
Помогите пожалуйста! Никак в толк не возьму, в чем дело! Пишу следующее:
Можете себе представить, не работает! Между прочим, вот такая строчка:
Работает! Что за дела! Помогите плиз исправить! |
| Автор: sergejzr 9.3.2006, 20:41 |
| Давай больше кода. Что такое s? И как "не работает"? не пишется, не реагирует. Как? |
| Автор: The Thing 9.3.2006, 20:43 |
| Вот не помню точно.. но через принтф у меня была такая же байда..какая именно не помню, но именно буква я там выступала в роле чего-то другого. Короче напиши отлавливает она 'я' или нет? (помоему с этимм проблема была.) пиши код буквы 'я'ВСЕ! |
| Автор: mr.Anderson 9.3.2006, 20:56 |
| sergej.z, s - символьная переменная (тип char). Не работает - в смысле в целевом файле нужная комбинация ya не появляется. |
| Автор: mr.Anderson 9.3.2006, 21:43 | ||
| Пробовал вот такое сделать: Так. Попробовал как вариант вписать код буквы Я.
Т.е. вписать вместо "я" ее код. Бесполезняк. |
| Автор: mr.Anderson 9.3.2006, 22:14 | ||
| Если это важно. ОС: WinXP. Компилер: Borland C++ Builder 6.0. Код (это все, что относится к моему вопросу!):
|
| Автор: nikitao 9.3.2006, 22:16 |
| sim7, а заглавная 'я' работает? |
| Автор: mr.Anderson 9.3.2006, 22:22 |
| nikitao, нет. |
| Автор: Бонифаций 10.3.2006, 00:43 |
| постойте ка, вы куда пишете? Неужели в тот же файл из которого читаете ?? |
| Автор: maxim1000 10.3.2006, 02:09 |
| код буквы char('я')=-1 (т.к. по умолчанию char считается знаковым) EOF тоже равен -1 вот и получается, что буква 'я' путается с признаком конца файла выход такой: сначала присвоить результат getc какой-нибудь целой переменной потом проверить на равенство -1 а потом - присвоить s... |
| Автор: shad0w 10.3.2006, 03:06 |
| undigned char s; |
| Автор: mr.Anderson 10.3.2006, 17:15 |
| Бонифаций, нет, читается из одного, пишется в другой. Я не настолько глуп, чтобы понять, что с одним и тем же файлом эти две операции выполнять нельзя. shad0w, не работает. maxim1000, попробую. |
| Автор: mr.Anderson 10.3.2006, 17:42 | ||||
| Не сработало. Вот такое для интереса написал:
Не работает. Не появляется в консольном окошке ни YES, ни NO. Добавлено @ 17:49 Немного подправил код. Вот так:
Сработало. Вот только в консольном окошке появилось NO. Хотя в файле, который код роет, написана буковка Я. |
| Автор: Darhazer 10.3.2006, 17:50 | ||
Попробуйте так:
У вас же уже есть проверка на feof, и она работаеть с 0, а не с -1, зачем вам проверят и s на eof, если знаете, что eof == 'я' P.S. NO появилось, потому что проверяете на (unsigned char) 'я', а s - signed char |
| Автор: mr.Anderson 10.3.2006, 17:59 |
| Darhazer, от меня плюс в репутацию. Большое спасибо! Добавлено @ 17:59 Всем, кто отвечал, тоже спасибо за старание. Вопрос решен. |
| Автор: mr.Anderson 10.3.2006, 21:09 |
| Стоп-с! Рановато я обрадовался. Появилась еще более серьезная проблема. Буква "я"-то заработала. Да вот только теперь она стала дописываться в конец всего текста. Вроде, решение понятно: просто "отрезать" два последних символа ("ya") из текста. И вывести отредактированный. Да вот только не получилось так. Почему-то иногда "я" писалась, а иногда нет! И чаще получалось так, что у меня обрезались нужные символы. Скажем, писал "папа", а вместо "papa" получал "pap". Долго бился, но ничего не вышло. P.S. Знаю, знаю, чего вы потребуете. Больше кода! Как "оживлю" программу, выложу код. Через день-два. |
| Автор: Dov 10.3.2006, 22:21 | ||
Попробуй do - while
то есть сначала присваивай (s = getc(file)) и печатай (printf("%s","ya")), а потом проверяй (while (s != EOF) ) |
| Автор: Dov 11.3.2006, 00:13 | ||
Так, пожалуй, будет лучше
|