Помогите найти ошибку (запись в файл) |
Здравствуйте, гость ( Вход | Регистрация )
Помогите найти ошибку (запись в файл) |
++Norton++ |
11.10.2008, 23:06
Сообщение
#11
|
Студент Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: 1 |
В том то и дело, что просто переходит на другую линию (так, в принципе, и надо).
|
|
|
Litkevich Yuriy |
11.10.2008, 23:21
Сообщение
#12
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
ну я кажется просто торможу, вот такой код попробуй:
я вот непонял насчет повторного вызова функции catFile() это обязательно? |
|
|
++Norton++ |
12.10.2008, 0:41
Сообщение
#13
|
Студент Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: 1 |
Да, последующие вызовы тоже должны быть возможны.
Проверил код, первый вызов функции работает нормально, а вот последующие... такая же ситуация как и с моим кодом |
|
|
Litkevich Yuriy |
12.10.2008, 0:46
Сообщение
#14
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
тогда перед выходом из функции вызывай либо void QTextStream::reset () либо bool QTextStream::seek ( qint64 pos ) с позицией нуль. Ни тот ни другой, я не использовал поэтому не знаю что тебе подойдет.
|
|
|
++Norton++ |
12.10.2008, 11:22
Сообщение
#15
|
Студент Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: 1 |
К сожалению, не то ни другое не подходит. Перед while пробовал ставить и in.seek(0) и in.reset(); но результат такой же...
|
|
|
Tonal |
12.10.2008, 12:20
Сообщение
#16
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
cat>file как бы тоже не перезапускается.
Так что приведённые функции работают совершенно аналогично. Насколько я понимаю, шел по Ctrl+D просто закрывает пайп ввода, так что бессмысленно пытаться что-то ещё с ним зделать после этого. Объясни ещё раз, чего именно ты пытаешся добиться? Сообщение отредактировал Tonal - 12.10.2008, 12:21 |
|
|
Litkevich Yuriy |
12.10.2008, 15:49
Сообщение
#17
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Tonal, посмотри пожалуйста тему QTextStream, operator<< работает асинхронно?, для меня поведение ввода/вывода неимеет объяснение
|
|
|
++Norton++ |
12.10.2008, 22:22
Сообщение
#18
|
Студент Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: 1 |
Tonal
Мне нужно написать функцию, которая бы считывала строку за строкой, введенные пользователем в stdin и потом, все то, что он вводил записалось в файл. При нажатии Enter, выполнение функции не должно прекращаться (как в любом текстовом редакторе. Это просто переход на следующую строку). Т.е: 1. Вызывается функция и пользователь вводит в консоли (именно так, строку за строкой): 12345 67890 123123 2. Когда все написано, посылает сигнал о прекращении выполнения функции ( в моем случае это был ctrl+D, но полного успеха как видно нет). 3. Все то, что он ввел, записывается в файл (точно так же строка за строкой). Т.е. содержимое файла примет вид: 12345 67890 123123 Вот собственно и вся задача. |
|
|
Litkevich Yuriy |
12.10.2008, 22:28
Сообщение
#19
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
++Norton++, дак тебе зачем вызывать функцию несколько раз?
При первом вызове, она съест все строчки и вывидит их в файл, см. мой пост №12, именно это и происходит, в виндовозе покрайней мере. Хоть там и нет <Ctrl>+<D> |
|
|
++Norton++ |
12.10.2008, 23:38
Сообщение
#20
|
Студент Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: 1 |
Просто после выполнения этой функции не происходит выход из программы (передается управление опять функции main()). И если например пользователю нужно создать сразу же еще один текстовый файл (после создания первого), тогда нужно осуществить еще один вызов функции.
|
|
|
Текстовая версия | Сейчас: 18.4.2024, 5:14 |