crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V  < 1 2 3  
Ответить в данную темуНачать новую тему
> Помогите найти ошибку (запись в файл)
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  


Цитата(++Norton++ @ 13.10.2008, 3:38) *
передается управление опять функции main()
а ты выйди из приложения и все
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 18:46