|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.05.2009, 17:24 | #1 |
Пользователь
Регистрация: 09.05.2009
Сообщений: 12
|
Чтение и Запись текста из\в файл(а), C++
Проблема вот в чём, нужно из файла(.txt) прочитать символы; текста многа, т.е. кол-ва строк многа и строки длинные.
Мне сказали что можно использовать fgets(); но эта функция читает, ток одну строку, и кол-во символов нужно задавать, а если текст большой, что кажд раз подсчиывать?) -> неудобно. и мне нужно сохранение абзацев, поэтому лишь одной строкой обойтись не могу( И ещё: какую лучше функцию испольовать, что бы такой же большой текст записывать? И ещё, даже когда читаю одну строку, ну как ниже, он её выводит и справа ещё какието значки приписывает, коих не должно быть Например: Текст в файле: hello, i'm russia. То выводит: hello, i'm russia.ээээ««««««««юоюоюою почему так происходит? Вот что у меня получилось, помогите пажалуста, очень нужна помощь!! Код:
|
09.05.2009, 17:43 | #2 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Что-то не очень понял, что требуется.
Можно читать блоками, например, по 100 символов. Вот пример. Содержимое файла input.txt копируется в output.txt. Код:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
09.05.2009, 17:53 | #3 |
Пользователь
Регистрация: 09.05.2009
Сообщений: 12
|
Функция fgets() читает только строку и кол-во символов нужно задавать
А как мне из файла вот такой текст прочитать, где строк многа: Код:
Можешь объяснить что значит чтение блоками, я не совсем понимаю |
09.05.2009, 17:56 | #4 | ||
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
Цитата:
Функция fread читает блок данных указанного размера. В данном случае, это 100 элементов размером в 1 байт. Чтение происходит в буфер (buf). Функция возвращает количество реально прочитанных символов. Это значение мы и используем, чтобы записать блок в другой файл.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
||
09.05.2009, 18:13 | #5 |
Пользователь
Регистрация: 09.05.2009
Сообщений: 12
|
Вообще я в программе реализую шифр Вернама; нужно чтобы текст из файла записался в массив, потом создаётся ключ из символов длинной с этот текст, далее идёт шифрование с помощью XOR, и всё это добро нужно записать в файл)
|
09.05.2009, 18:20 | #6 | |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
fgets тут лучше не использовать.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
09.05.2009, 18:53 | #7 |
Пользователь
Регистрация: 09.05.2009
Сообщений: 12
|
2:Sazary
У меня возник такой вопрос, вот я закомпилил ваш пример: Код:
Код:
|
09.05.2009, 18:58 | #8 | |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
Вы считываете блоки в цикле. Поэтому там же должны и выводить. Дальше. Буфер имеет определенный размер. Поэтому и выводится он полностью, до символа конца строки, то есть, нуль-символа. Если буфер заполняется не полностью, то место конца нужно указать явно: Код:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
09.05.2009, 20:41 | #9 |
Пользователь
Регистрация: 09.05.2009
Сообщений: 12
|
2:Sazary
Мне снова нужна помощь. Вот чтение из файла и запись его содержимого в массив проходит как нужно. Но вот создание ключа проходит не корректно: длинна ключ должна быть равна длинне текста(текст берётся тот, что в посте №3 и №7) из файла, но ключ значительно короче, как его удлиннить?)) И корректно записать в файл?) Код:
|
09.05.2009, 21:04 | #10 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Уфф... Тут долго разбираться )
Давайте локализуем проблему. Что у вас там, длина ключа маленькая? Вот, что вижу: Код:
Вычислять длину нужно на стадии чтения: Код:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чтение>сортировка>запись | theFEAR | Помощь студентам | 1 | 22.04.2009 09:33 |
Запись/чтение из файла (С++) | alexov | Общие вопросы C/C++ | 15 | 18.01.2009 17:35 |
Запись в файл и чтение из него. | Swool | Общие вопросы C/C++ | 8 | 26.08.2008 16:39 |
Запись и чтение файла... | Altera | Общие вопросы Delphi | 5 | 06.05.2008 20:22 |