Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2012, 15:18   #1
Christor
Пользователь
 
Регистрация: 11.05.2012
Сообщений: 15
Вопрос Работа с нетипизированными указателями/файлами

Когда учил паскаль, часто обращался к нетипизированным указателям и файлам (особенно при работе с графикой в ДОС, когда нужно было скопировать в файл участок экрана, чтоб потом его воспроизвести).
Сейчас учу С++. Во всех книгах, которые только находил, хорошо описывается работа с тип. указ., но ни в инете, ни в книгах не могу найти должного описания void *.. . В книгах только упоминается, что такое существует, но как выделить память, как её освободить... такого нет.

Ещё беда. В паскале файлы делятся на 3 типа: текстовые, типизированные и нетипизированные. В С++ так же? Опять же... в книгах о текстовых файлах написано огромное кол-во инфы, а о двух других- ни слова.

Собственно вопросы:
1) как работать с нетип. указ. (инициализация, освобождение памяти)?
2) есть ли принципиальные отличия тип. и нетип. файлов в С++ от тех же файлов в паскале? (имеется в виду не синтаксис, а способы управления)
3) дайте ссылку на статью, где описывается работа с тип и нетип файлами в С++ или хотя бы коротко опишите сами.

Последний раз редактировалось Christor; 09.07.2012 в 15:20.
Christor вне форума Ответить с цитированием
Старый 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
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Christor

Опять же... в книгах о текстовых файлах написано огромное кол-во инфы, а о двух других- ни слова.

У тебя какие-то неправильные пчелы книги

Собственно вопросы:
1) как работать с нетип. указ. (инициализация, освобождение памяти)?


функции malloc/calloc и free

2) есть ли принципиальные отличия тип. и нетип. файлов в С++ от тех же файлов в паскале? (имеется в виду не синтаксис, а способы управления)

в C++ нет типизированых файлов
Rififi вне форума Ответить с цитированием
Старый 09.07.2012, 16:05   #4
Christor
Пользователь
 
Регистрация: 11.05.2012
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение

У тебя какие-то неправильные пчелы книги
Не спорю.


Спасибо. Буду искать информацию по malloc/calloc, free.

Гром, нет какой либо конкретной задачи . Задача- научиться использовать указатели. За ссылку отдельное спасибо.
Christor вне форума Ответить с цитированием
Старый 09.07.2012, 16:28   #5
Christor
Пользователь
 
Регистрация: 11.05.2012
Сообщений: 15
По умолчанию

Т.е. как я понял, бинарный файл в С++ это тоже самое, что нетипиз. ф. в паскале.
Ещё вопрос. В паскале была процедура для перехода к определённому байту в нетип файле: seek(f,count), где f- файловая переменная, count- к какому байту нужно перейти.
В С++ есть подобная функция?

Допустим в файле я храню 2 массива. Мне нужно считать второй. Как это сделать?
Или, чтоб было проще для восприятия... в файле я храню 1000 элементов типа int (не массив, а просто элементы). Как мне считать 500-тый элемент?

Последний раз редактировалось Christor; 09.07.2012 в 16:31.
Christor вне форума Ответить с цитированием
Старый 09.07.2012, 16:30   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
это тоже самое, что нетипиз. ф. в паскале.
Нет. Типизированные файлы тоже содержат информацию в машинном коде.
Цитата:
В С++ есть подобная функция?
Читай про fseek()
Цитата:
Мне нужно считать второй.
Смещение его известно? Вычислить можно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.07.2012, 16:33   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
В С++ есть подобная функция?
смотря как с файлами работаете.
есть fseek для С файлов и С++-потоки имеют метод std::istream.seekg или std:stream.seekp
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.07.2012, 16:38   #8
Christor
Пользователь
 
Регистрация: 11.05.2012
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Нет. Типизированные файлы тоже содержат информацию в машинном коде.
Оно то так, но доступ к элементам типизированного файла в паскале упрощается. Я имел в виду, что доступ к элементам бинарного файла в С++ такой же как к нетип файлу в паскале.

Насчёт "Допустим в файле я храню 2 массива" понял. Находим откуда считывать по смещению.
Хм... а если структура? высчитывать размер одной структуры?
Christor вне форума Ответить с цитированием
Старый 09.07.2012, 16:50   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Хм... а если структура? высчитывать размер одной структуры?
а sizeof никто не отменял.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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