Lan_Morehell
1

чтение определенного элемента массива из файла

02.11.2011, 12:53. Показов 3071. Ответов 2
Метки нет (Все метки)

добрый день!

суть такова - есть массив целых, который я записываю в файл. выглядит это так:

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
int Mass[Msize];           //собственно массив
 
int WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int)
{
 
//--------------- заполняем массив
        int i;
        srand(time(NULL)); 
        for (i = 0; i < Msize; i++)
        {
                Mass[i]= rand()% 30;
        }
 
//----- записываем в файл
 
DWORD ByteWrite;
DWORD sizemass = sizeof(Mass);
 
HANDLE hFW = CreateFile("C:\\test2.txt",GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,NULL);
 
WriteFile(hFW,Mass,sizemass,&ByteWrite,NULL);
 
CloseHandle(hFW);
все работает, в файл пишется, получается набор шестнадцатеричных чисел.. все по заданию, выглядит как:
05 00 00 00 04 00 00 00 11 00 00 00 18 00 00 00

а вот как быть дальше - ума не приложу. Мне надо считать из файла обратно произвольный элемент массива (скажем, третий) и вывести его на экран, причем по файлу нужно перемещаться с помощью SetFilePointer.

У меня получается примерно следующая заготовка:

C++
1
2
3
4
5
6
7
8
9
10
DWORD ByteRead;
 
HANDLE hFR = CreateFile("L:\\test.txt",GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
 FILE_ATTRIBUTE_NORMAL,NULL);
 
char *element = new char[5];
 
SetFilePointer(hFR, 4, NULL, FILE_BEGIN);
 
ReadFile(hFR,element,sizeof(int),&ByteRead,NULL);
Но это явно неправильно - я ума не приложу, как сделать:
1. как передать функции SetАilePointer правильное смещение, чтобы считывать именно нужный элемент.
2. Правильно ли я его считываю в Char, и правильный ли у него размер, если нет - как понять сколько считывать, чтобы был считан только один элемент
3. Надо ли будет потом преобразовывать считанное в int и как

Подскажите, пожалуйста
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2011, 12:53
Ответы с готовыми решениями:

Чтение из файла определенного символа
Привет Друзья! Нужно записать в &quot;ComboBox&quot; определенный символ, который находиться в файле на 4...

Чтение определенного количества символов из файла
Подскажите пожалуйста какой функцией можно прочитать определенное количество символе из файла ...

Чтение текстового файла до определённого символа
Ниже предоставлен код, не совсем понимаю как организовать поиск. Мне нужно вывести все вопросы, для...

Чтение определенного узла из XML файла
у меня есть xml файл следующего содержания: &lt;?xml version='1.0' encoding='ISO-8859-1'?&gt; &lt;Config&gt;...

2
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
02.11.2011, 12:57 2
Цитата Сообщение от Lan_Morehell Посмотреть сообщение
SetFilePointer(hFR, 4, NULL, FILE_BEGIN);
Получается 4 байта, а надо №элемента*sizeof(int)
Цитата Сообщение от Lan_Morehell Посмотреть сообщение
Правильно ли я его считываю в Char
А смысл, если нужен то int?
0
Lan_Morehell
02.11.2011, 13:41 3
И правда, все заработало. Спасибо большое!
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2011, 13:41
Помогаю со студенческими работами здесь

Чтение определенного поля в строке из файла
Всем привет. Вопрос следующий: Есть файл, в нем строки, нужно его открыть и считать...

Чтение txt-файла с определенного места
Здравствуйте товарищи ! Подскажи как реализовать копирование данных из .txt с определенного места?...

Чтение файла и копирование определенного текста
Приветствую вас, друзья! Подскажите как при помощи php можно реализовать подобное (см. ниже)?...

Чтение с файла определенного интервала строк
Доброго времени суток, подскажите, пожалуйста: 1. как читать определенные интервалы строк с...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru