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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функция поиска вхождения строки в заданную строку в С http://www.cyberforum.ru/cpp-beginners/thread23316.html
получил в универе такое задание Функция - Findwords(s,s1). Назначение - поиск вхождения в строку s заданной фразы (последовательности слов) s1. В общем задание написать эту функцию, по началу вроде бы несложно, но потом препод сказал что возвратить надо строку: К примеру имееться строка s="Привет Андрей Васильевич"; s1="Привет Андрей" вывести тогда надо "Привет Андрей"; но если такая...
C++ Оператор ввода мне очень нужна нужна функция или совокупности нескольких, которые без всякого нажатия интер считывали бы нажатие клавиши и записывали бы значение в переменую, причем функция должна работать, не ожидая ввода, а при отсутствии отклика возвращала бы определенное значение. Оооооочень нужна эта чудо вещь.. помогите плиз... весь гугл излазил.... И еще оди н вопросик не втему... как удалить... http://www.cyberforum.ru/cpp-beginners/thread23311.html
Как вообще работают fstream.open(), class.pointer to massive? C++
Мне надо узнать направление поиска информации общего характера по тому, как данная прога с большим числом циклов обменивается информацией с ХР И процессором. Т.е. как вообще работают fstream.open(), class.pointer to massive. и т.д -как идёт обработка этих функций. Это не праздный интерес, с прогой сложности.
C++ Лежит ли точка в круге и треугольнике
Даны круг и треугольник на плоскости.Кординаты вводятся с клавиатуры.Даны кординаты точки. Узнать лежит ли точка в области пересечения 2ух фигур
C++ Чтобы звездочка бегала по краям экрана http://www.cyberforum.ru/cpp-beginners/thread22971.html
Доброго времени суток, уважаемые программисты! Нужна помощь. Написал программу на Borland C++, которая заполняет экран ASCII символом * (звездочка), вся проблема в том что она заполняет экран от начала до конца а я хочу улучшить программу чтобы звездочка бегала по краям экрана притом чтобы не было видно предыдущую. Не могу понять как это сделать. Вот нынешний код: #include<stdio.h>...
C++ Классы в Turbo C/Borland C Класс для объекта-вектора, что задается координатами концов. Создать операции сложения и отнимания. Можете написать как должен выглядеть этот класс? подробнее

Показать сообщение отдельно
TGrey[WoLf]
 Аватар для TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
16.02.2009, 00:39     Чтение из файла
Добрый день, нужна помощь!
Нужно прочитать данные из файла. Как я понимаю они записаны структурой, ну или хотя бы в структуру их будет удобнее читать.

Вот инфа по файлу:
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
Как нужно правильно прочесть файл по блокам?%)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru