Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
#1

Чтение из файла - C++

16.02.2009, 00:39. Просмотров 1635. Ответов 2
Метки нет (Все метки)

Добрый день, нужна помощь!
Нужно прочитать данные из файла. Как я понимаю они записаны структурой, ну или хотя бы в структуру их будет удобнее читать.

Вот инфа по файлу:
This file holds all the base-level terrain, and doesn't look too pretty without the static data.

The map is stored as a 768x512 matrix of blocks. A block is basically a 8x8 matrix of cells. Each individual cell contains data about the tile for that cell, and the cell's altitude. Therefore, the entire map is 6144x4096 individual cells in size.

Blocks are loaded top-to-bottom then left-to-right. Cells are loaded from blocks left-to-right then top-to-bottom.

The formula used to locate an individual CELL in the file is a little complex, since you have to work out what block it is in...

If you refer to the map in blocks, then there's 512 blocks down, by 768 blocks across.

XBlock = Int(XPos/8)
YBlock = Int(YPos/8)
Block Number = (XBlock * 512) + YBlock
MAP0 (37,748,736 bytes)

393,216 [Block]s sequentially, Block = 196 bytes
DWORD header, unknown content
64 Cells
Cell (3 bytes)
0 1 2
Color Alt

UWORD cell graphic (which can be looked up in RADARCOL).
BYTE Altitude (-128..127 units above/below sea level).
Смастерил я вот такую программку, но это сейчас версия "то, что он нее осталось после разных проб"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <windows.h>
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <fstream.h>
#pragma pack (push, 1)
 
typedef signed char SBYTE;
 
struct cells
{
         WORD TileID;
         CHAR Z;
};
 
struct block
{
    int header;
    cells c[64];
};
 
 
int main()
{
    block b;
    int header;
         WORD TileID;
         CHAR Z;
    ifstream file("D:\\Ultima Online Mondain Legacy\\map0.mul");
    while (!file.eof())
    {
                //file.read((signed char*)&b, sizeof(block));
        file >> header;
        file >> TileID;
        file >> Z;
        cout<<(int)TileID;
    }
    //cout<<sizeof(block);
    return 0;
}
В общем вроде все как верно?! Структура Целлсов = 3байта, Блока = 196байт.
Как не читаю структурно или последовательно результат один.
TileID выдает 52000 без сотен и десятков а Z выдает -52
Как нужно правильно прочесть файл по блокам?%)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2009, 00:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение из файла (C++):

Переделать в коде чтение из файла в чтение с клавиатуры - C++
Переделайте что бы текст считывался с клавиатуры, а не с файла! Буду благодарен за помощь! //файл должен начинаться со слова, между...

Чтение из файла. Повторное чтение файла - C++
Добрый день. Необходимо реализовать в программе функцию повторного чтения данных из файла, в случае некорректного ввода их в оный. Вот...

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;locale.h&gt; #include&lt;iomanip&gt; #include &lt;cstdlib&gt; using namespace std; struct...

Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется - C++
Формат файла состоит из 3 структур и одной переменной. Подробное описание формата во вложении, просьба посмотреть его. У меня возникла...

как может корректно выполняющийся оператор >> (чтение из текстового файла) негативно влиять на открытие другого файла? - C++
Друзья! Создадим два текстовых файла, f_0.txt и f_1.txt и что-нибудь в них запизаем, например в первый запихаем 1234 а во второй 5678 и...

Чтение файла с несколькими знаками конца файла - C++
В файле несколько раз встречается ноль, и ни как не получается прочитать его полностью. Как можно решить данную проблему ?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Шерсть-На-Носу
40 / 40 / 1
Регистрация: 30.01.2009
Сообщений: 168
16.02.2009, 08:49 #2
Вероятно, для начала нужно открыть файл как бинарный...
TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
16.02.2009, 18:25  [ТС] #3
Оно так и есть... Все спасибо! Все работает!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2009, 18:25
Привет! Вот еще темы с ответами:

Чтение из файла - C++
хочу прочесть из фалай пример txt втору строку первый символ пробывал fgets читает &quot;все&quot; какие варианты еще есть чтения из...

Чтение файла в 16-СС - C++
Здравствуйте, как можно реализовать следующее: Нужно открыть файл для чтения в бинарном режиме, считывать по три байта и записывать их в...

Чтение из файла - C++
Вывод из файла делаю с помощью следующего кода: AnsiString pol; . . . f = fopen ( &quot;name.txt&quot;, &quot;r&quot; ); fscanf ( f, &quot;%s&quot;, &amp;pol...

Чтение из файла - C++
задание: помогите с 3 заданием!!! как можно сделать что бы программа считывала файл auto.txt и распределяла данные по классам, ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru