|
5 / 4 / 0
Регистрация: 18.10.2009
Сообщений: 69
|
||||||
Чтение из файла с конца22.05.2010, 12:50. Показов 30886. Ответов 18
Метки нет (Все метки)
Добрый день, не могу реализовать такую штуку =)
Хотелось бы имеющийся текстовый файл перезаписать с обратном порядке (все символы наоборот) Понятно, что надо открыть файл на чтение и установить ук-ль на конец файла. А дальше... Может циклом while читать посимвольно, но какое условие задать? =)
0
|
||||||
| 22.05.2010, 12:50 | |
|
Ответы с готовыми решениями:
18
Чтение файла с несколькими знаками конца файла Чтение начиная с конца файла Чтение запросов до конца файла |
|
102 / 102 / 23
Регистрация: 12.05.2010
Сообщений: 232
|
||||||
| 22.05.2010, 13:20 | ||||||
|
зачем себе так усложнять жизнь?
читаешь весь файл построчной fgets(массив, размер можно, указатель на файл) в двухмерный динамический массив.... потом каждую строку разворачиваешь char *strrev(char *s); и начиная с последней строки пишешь в новый файл.
PS количество строк можно узнать прогнав fgets в цикле с счетчиком до создания массива.
1
|
||||||
|
5 / 4 / 0
Регистрация: 18.10.2009
Сообщений: 69
|
||||||
| 22.05.2010, 14:20 [ТС] | ||||||
|
Комплируется нормально, работу прекращает во время выполнения, ошибка думаю происходит в fgets, как исправить не знаю.
0
|
||||||
|
102 / 102 / 23
Регистрация: 12.05.2010
Сообщений: 232
|
||||||
| 22.05.2010, 16:18 | ||||||
|
после того как ты посчитал строки нужно закрыть указатель на файл, и открыть заново, т.к. там указатель стоит в конце файла...
Добавлено через 13 минут
1
|
||||||
|
5 / 4 / 0
Регистрация: 18.10.2009
Сообщений: 69
|
|
| 22.05.2010, 16:42 [ТС] | |
|
ААААА)))))))))) понял почему))) спасибо большое =)
п.с. тут сообщения удалять можно? оО
0
|
|
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
||||||
| 22.05.2010, 17:30 | ||||||
0
|
||||||
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
||||||
| 23.05.2010, 10:02 | ||||||
|
Это все какие-то извращения
1) Определяем размер файла 2) Выделяем буфер 3) Читаем весь файл в память - одним read() 4) В памяти разворачиваем буфер
0
|
||||||
|
0 / 0 / 0
Регистрация: 27.03.2018
Сообщений: 12
|
|
| 22.10.2018, 12:40 | |
|
А можешь подробнее написать с read() ?
0
|
|
|
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,888
|
|||||||||||
| 22.10.2018, 16:23 | |||||||||||
|
odip, Еще проще: отображаем файл на память и отображаем сразу там:
Вариант для мазохистов (WinAPI)
Результаты тестирования простейшего решения в лоб (можно было бы поиграться с блочным чтением, но сейчас неохота) для трех вариантов: через потоки (open/read/write), через отображение на общую память (флаг MAP_SHARED) и через отображение на локальную память (флаг MAP_PRIVATE). . Файл ~600 МБ потоки: 0.78 сек shared: 0.56 private: 0.69 . Файл ~4 ГБ потоки: 17 сек shared: 31 private: 21 . В случае работы через потоки приходилось создавать массив размером с файл, то есть для сверхбольших файлов этот способ уже не подойдет. На маленьких файлах выигрывает отображение на память, вероятно за счет меньшего количества копирования туда-сюда. На крупных же лучше работает последовательное копирование в локальный буфер, а потом - не менее последовательное обратно. Произвольный же доступ вводит систему в ступор.
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 27.03.2018
Сообщений: 12
|
|
| 22.10.2018, 22:07 | |
|
Да но у меня простой файл,
но win10+ MSVisualStud15, не могу найти библиотеки #include <sys/mman.h> #include <unistd.h>
0
|
|
|
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,888
|
||
| 23.10.2018, 10:10 | ||
|
exbbrat, что значит "простой файл"? Текстовый что ли?
0
|
||
|
Параллельный Кот
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
|||||||
| 23.10.2018, 14:17 | |||||||
|
Однако, никто не обратил внимания на то, что обрабатывать требуется текстовые файлы под Windows. Просто прочитать блок, перевернуть и записать обратно не получится, т.к.: 1. Конец строки в Windows состоит из двух байт CR+LF, если их поменять местами, получится чушь. 2. Если файл содержит многобайтовую кодировку, проблем еще больше. В общем случае, придется преобразовать содержимое файла в кодировку, где все символы кодируются одинаковым количеством байт (например UTF-32), затем переставить их в обратном порядке и выполнить обратное преобразование и запись в файл. Если же файл в кодировке Windows-1251 (допустима и UTF-8, но при условии, что файл содержит только символы из младшей половины таблицы, т.е. английские буквы, цифры, знаки препинания и еще некоторые символы), то можно обойтись и простым get().
Не посмотрел на дату. Некропостингом попахивает, брр...
0
|
|||||||
|
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,888
|
|||||
| 23.10.2018, 14:26 | |||||
tac a.txt | rev > b.txt
0
|
|||||
|
Параллельный Кот
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
||||
| 23.10.2018, 20:44 | ||||
|
0
|
||||
|
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,888
|
||||
| 24.10.2018, 10:07 | ||||
|
0
|
||||
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|||||||||||
| 06.01.2023, 15:23 | |||||||||||
|
Добрый день.
Столкнулся с такой же проблемой. Нужно прочитать последнюю строку в объёмном текстовом файле. Не нашел здесь подходящего решения. Придумал свое. Может кому пригодится:
У нас строка не превышает 50 символов. Добавлено через 1 час 48 минут Да.... Если нужно решение начального задания: прочитать файл "задом наперед" , то вот оно:
И опять же... это для ASCII
0
|
|||||||||||
|
|
||||||
| 06.01.2023, 18:33 | ||||||
|
Хорошая задача на применение рекурсии.
Переменную fin я, пожалуй, зря ввел. Перемудрил. Убрал теперь.
0
|
||||||
|
Заблокирован
|
|
| 06.01.2023, 18:38 | |
|
Когда нужно будет с утреца глаза разомкнуть, буду этот топик открывать.
Глазища сами так вжииик
0
|
|
| 06.01.2023, 18:49 | |
|
Не по теме: Ветка живет с 2010 года. Оказывается, задача эта вечная. Когда уже нас всех заберет ковид, еще кто-нибудь напишет. Аминь!
0
|
|
| 06.01.2023, 18:49 | |
|
Помогаю со студенческими работами здесь
19
Чтение файла с n строки и до конца файла
Вывод из файла в QTableWidget, построчное чтение с конца файла
Чтение чисел из файла. Чтение после конца потока невозможно Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|