![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ManiaK |
|
||||
![]() Homo Sapience ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1145 Регистрация: 3.8.2004 Где: ИУ5-93 Репутация: 5 Всего: 29 |
Вот этот код:
Заменить на этот:
Тогда и символы вводимые будут отображаться и закончится ввод на тильде. |
||||
|
|||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Спасибо! Пойду пробовать. Сейчас отпишу, что получится.
Добавлено @ 18:15 Отлично! Maniak, полный порядок. Ваш код вполне сработал. Осталось только придать ему "красоты". Спасибо большое всем, кто мне тут помогал. Просто огромное спасибо. И еще: несмотря на то, что я использовал код без класса string, все равно его изучение в этой теме для меня лишним не было. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Так. Стоп-с. Одна проблема. Enter вводить нельзя. Почему-то. Когда его нажимаешь, то указатель курсора в консоли становится на начало строки, и весь текст просто перетирается (переписывается) новыми буквами, которые я потом ввожу. Кстати, когда нажимаешь Backspace, то указатель тоже просто перемещается на 1 позицию назад, и при последующем вводе букв опять-таки просто "перетирает" символы. Как поправить?
|
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Что, устали отвечать? А как тут все бойко шло час назад... Эх...
Но эту проблему я сам решил. Если у кого еще будет такой вопрос, то надо просто подставить в код проверку на нажатие энтера вот таким вот кодом:
Вот и все! Теперь ваши консольные приложения будут вполне адекватно обрабатывать нажатие клавиши Enter. |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 2 Всего: 18 |
Забой не работает тк ты читаешь каждый символ по отдельности из буфера и забираешь его. Потому ты не можешь удалить последний введенный символ из буфера тк его там уже нет.
С ентером прикольно получилось. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Нравится? Сам радуюсь.
Теперь еще задача. Тоже с использованием типа string, наверное, поэтому, ув. модераторы, это не оффтопик. Задача такая. Пользователь вводит (опять же, в консоли) путь к файлу (естественно, в путь включено и имя). И вот надо открыть файл по указанному пути и обработать его. Я попробовал так:
Но компайлер ругается, что в прототипе функции fopen нет места переменным типа string. Так как же решить эту задачу? Это сообщение отредактировал(а) sim7 - 5.8.2005, 20:51 |
|||
|
||||
| ManiaK |
|
|||
![]() Homo Sapience ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1145 Регистрация: 3.8.2004 Где: ИУ5-93 Репутация: 5 Всего: 29 |
Приведением к типу char*, уже писали сто раз.
Открой любой справочник по STL и найди там string. Не стоит засорять данный форум подобными вопросами. Я подниму вопрос по созданию чего-нибудь вроде школьного форума по Си++ раз такое дело получается, но вообще гораздо выгоднее дойти до технического решения самому - проще потом будет. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Это понятно, но я бы, конечно, не догадался так сделать. Спасибо! Сейчас буду пробовать.
|
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Программа-то скомпайлилась, но не так работает, как надо. Что бы я в консольном окне не написал, прога все равно пишет, что не может открыть файл... Код-то верный, может, я что не так набираю? Как надо писать имя файла в консоли? Пример приведите.
Если надо, вот код:
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Как и в gui. Если не работает, значит считываешь имя файла не так(если считываешь посимвольно, то проверь чтобы в имя файла не попадали символы быкспейса и ентера). В конце концов выведи file_name на экран/посмотри в отладчике. и еще - while((x==getc(c_file))!=EOF) заменить на while((x=getc(c_file))!=EOF). Кстати, а компилер не ругается? ЗЫ. Если указываешь имя файла в коде, то не забывай удваивать все \ знаки - то есть rebuild rebuild_source_file("c:\\autoexec.bat") ЗЫЫ. Ой нафлудили |
|||
|
||||
| Guest |
|
||||||
|
Unregistered |
(Guest это был Mayk)
Ну чтобы эта мессага не совсем флуд была, то выскажу еще свое имхо, что смешивать С++ с С нехорошо. В плюсах есть удобные fstream для файлов. И еще -
вместо gets стоит использовать fgets
|
||||||
|
|||||||
| Fixin |
|
||||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 2 Всего: 18 |
|
||||
|
|||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Да так же - константа EOF, которую возвращает fgetc при конце файла, равна -1(0xFFFFFFFF), в то время как размер char'а ограничен одним байтом(0xFF максимум). Ну двумя, если мы о wchar_t будем говорить. Поэтому fgetc'у нет принципиальной разницы, бинарен файл, или нет. Плюс еще feof(FILE* stream) есть. Только из контекста я понял, что файл как раз текстовой, а не бинарный. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 1 Всего: 20 |
sim7
Маленькое замечание. Двойные кавычки в контексте C++ в большинстве случаев используются для обозначение строки. "\n" - хоть ошибкой и не является, но в некоторых местах программы это может сбить с толку читающего программу. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Да, файл текстовый.
А про двойные кавычки - это о чем? Где я их вместо одинарных использовал? Что-то не найду никак... И я еще раз повторюсь. Прога вообще не воспринимает имя файла. В консоли пишу:
По коду после этого ввода запускается описанная выше функция rebuild_source_file(std::string file_name) с новым значением. Файл newtext.txt расположен в директории самой программы, поэтому нет смысла указывать путь. Однако, выдается Fatal Error (по моему коду это тогда, когда файл нельзя открыть). Так в чем же дело-то?! |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |