|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.07.2012, 15:18 | #1 |
Пользователь
Регистрация: 11.05.2012
Сообщений: 15
|
Работа с нетипизированными указателями/файлами
Когда учил паскаль, часто обращался к нетипизированным указателям и файлам (особенно при работе с графикой в ДОС, когда нужно было скопировать в файл участок экрана, чтоб потом его воспроизвести).
Сейчас учу С++. Во всех книгах, которые только находил, хорошо описывается работа с тип. указ., но ни в инете, ни в книгах не могу найти должного описания void *.. . В книгах только упоминается, что такое существует, но как выделить память, как её освободить... такого нет. Ещё беда. В паскале файлы делятся на 3 типа: текстовые, типизированные и нетипизированные. В С++ так же? Опять же... в книгах о текстовых файлах написано огромное кол-во инфы, а о двух других- ни слова. Собственно вопросы: 1) как работать с нетип. указ. (инициализация, освобождение памяти)? 2) есть ли принципиальные отличия тип. и нетип. файлов в С++ от тех же файлов в паскале? (имеется в виду не синтаксис, а способы управления) 3) дайте ссылку на статью, где описывается работа с тип и нетип файлами в С++ или хотя бы коротко опишите сами. Последний раз редактировалось Christor; 09.07.2012 в 15:20. |
09.07.2012, 15:47 | #2 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
1. А для какой конкретно задачи они вам нужны? Скорее всего, существует гораздо лучшее решение, чем использование void*.
2. В C/C++ файлы бывают либо текстовые, либо бинарные. В первые пишутся данные, интерпретирующиеся как символы и строки, во вторые - просто как массив байт. 3. Как вариант: http://shatalov.su/ru/articles/cpp_primer/file_0.php Только, настоятельно советую, не рвитесь тут же копировать код оттуда в свои проекты, разберитесь досконально, как оно работает, и какие отличия от паскаля.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
09.07.2012, 15:52 | #3 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
Christor
Опять же... в книгах о текстовых файлах написано огромное кол-во инфы, а о двух других- ни слова. У тебя какие-то неправильные пчелы книги Собственно вопросы: 1) как работать с нетип. указ. (инициализация, освобождение памяти)? функции malloc/calloc и free 2) есть ли принципиальные отличия тип. и нетип. файлов в С++ от тех же файлов в паскале? (имеется в виду не синтаксис, а способы управления) в C++ нет типизированых файлов
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
09.07.2012, 16:05 | #4 |
Пользователь
Регистрация: 11.05.2012
Сообщений: 15
|
|
09.07.2012, 16:28 | #5 |
Пользователь
Регистрация: 11.05.2012
Сообщений: 15
|
Т.е. как я понял, бинарный файл в С++ это тоже самое, что нетипиз. ф. в паскале.
Ещё вопрос. В паскале была процедура для перехода к определённому байту в нетип файле: seek(f,count), где f- файловая переменная, count- к какому байту нужно перейти. В С++ есть подобная функция? Допустим в файле я храню 2 массива. Мне нужно считать второй. Как это сделать? Или, чтоб было проще для восприятия... в файле я храню 1000 элементов типа int (не массив, а просто элементы). Как мне считать 500-тый элемент? Последний раз редактировалось Christor; 09.07.2012 в 16:31. |
09.07.2012, 16:30 | #6 | |||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
Цитата:
I'm learning to live...
|
|||
09.07.2012, 16:33 | #7 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
есть fseek для С файлов и С++-потоки имеют метод std::istream.seekg или std:stream.seekp Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
09.07.2012, 16:38 | #8 |
Пользователь
Регистрация: 11.05.2012
Сообщений: 15
|
Оно то так, но доступ к элементам типизированного файла в паскале упрощается. Я имел в виду, что доступ к элементам бинарного файла в С++ такой же как к нетип файлу в паскале.
Насчёт "Допустим в файле я храню 2 массива" понял. Находим откуда считывать по смещению. Хм... а если структура? высчитывать размер одной структуры? |
09.07.2012, 16:50 | #9 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi. Динамический массив при работе с нетипизированными файлами | Arrow_S | Помощь студентам | 10 | 06.04.2012 22:19 |
Работа с указателями | yaapelsinko | Общие вопросы Delphi | 3 | 15.02.2012 01:13 |
Работа с указателями | Masip | Общие вопросы Delphi | 2 | 12.06.2010 12:49 |
Работа с указателями (C) | pixel_ | Помощь студентам | 1 | 28.08.2009 14:07 |
Работа с нетипизированными файлами | JustKurt | Общие вопросы Delphi | 4 | 18.07.2009 10:46 |