Помогите найти ошибку (запись в файл) |
Здравствуйте, гость ( Вход | Регистрация )
Помогите найти ошибку (запись в файл) |
AD |
12.10.2008, 23:40
Сообщение
#21
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Цитата(++Norton++) Просто после выполнения этой функции не происходит выход из программы (передается управление опять функции main()). И если например пользователю нужно создать сразу же еще один текстовый файл (после создания первого), тогда нужно осуществить еще один вызов функции. А что должно быть в этом 2 файле? То же самое, что в первом? |
|
|
++Norton++ |
13.10.2008, 0:00
Сообщение
#22
|
Студент Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: 1 |
Нет, опять то, что введет пользователь. В общем когда функция main() считывает:
cat > name_file Если ввод такой, то вызывается как раз эта функция catFile(); пользователь вводит данные (так, как я писал выше), нажимает ctrl+D, введенные данные сохраняются в файл name_file, и происходит возврат опять в функцию main. Здесь пользователь опять может ввести: cat > name_file2 И повторить эту же процедуру, но в name_file2 ввести уже другие данные. Только это как раз и не получается. В этом втором вызове просто создается пустой файл name_file2 и происходит возврат в main(). |
|
|
Litkevich Yuriy |
13.10.2008, 2:07
Сообщение
#23
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Tonal |
13.10.2008, 7:52
Сообщение
#24
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
2 ++Norton++ В твоём примере с cat-ами работают 2 программы: cat и шел.
когда ты запускаешь cat, шел открывает для него поток ввода. При нажатии Ctrl+D шел закрывает поток ввода для текущей запущенной программы. cat ловит это как конец файла и завершается. При повторном вызове cat-а, всё повторяется. Т.е. если ты хочешь воспроизвести это поведение, тебе нужно или напрямую управлять терминалом и самому ловить Ctrl+D (по умолчанию его ловит шел), либо придумать какой-нибудь другой признак окончания ввода файла. Например это может быт строка "EOF". Тогда твоя функция пишет файл, пока не считала эту спец.строку или конец файла. Если считала конец файла - всё, если считала спец.строку - можно ещё раз запуститься и читать дальше. П.С. На винде аналогом Ctrl+D является Ctrl+Z П.П.С. По моему к Qt тема имеет весьма слабое отношение. Ей в "Техника программирования" место, или в "Другое". Сообщение отредактировал Tonal - 13.10.2008, 7:55 |
|
|
Текстовая версия | Сейчас: 29.3.2024, 18:46 |