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

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

Войти
Регистрация
Восстановить пароль
 
Lan_Morehell
Сообщений: n/a
#1

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

02.11.2011, 12:53. Просмотров 1024. Ответов 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 и как

Подскажите, пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2011, 12:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос чтение определенного элемента массива из файла (C++):

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

Чтение определенного количества символов из файла - C++
Подскажите пожалуйста какой функцией можно прочитать определенное количество символе из файла Наприклад, файл містить 25 символів....

Чтение из файла определенного поля без записи в буфер предыдущих полей - C++
как на чистом си считать конкретное поле при этом не заводить переменные. формат такой: %d %s %c %d ..... если использовать...

Вывод определенного элемента массива из массива символов - C++
Имеется символьный массив char, нужно вывести на экран произвольный элемент этого массива. Сделал так: #include &lt;iostream&gt; ...

Сортировка массива до и после определенного элемента - C++
Есть одномерный массив из 20 последовательных элементов. Нужно: перемешать элементы массива, выбрать случайный элемент и отсортировать...

Удаление элементов из массива char до определенного элемента - C++
Необходимо удалить все элементы из массива char до элемента mas, зная i.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
mimicria
return (true);
1957 / 1094 / 91
Регистрация: 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
Сообщений: n/a
02.11.2011, 13:41 #3
И правда, все заработало. Спасибо большое!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2011, 13:41
Привет! Вот еще темы с ответами:

Чтение массива сразу после удаление элемента - C++
Подскажите как удалить элемент массива продолжить чтение массива с элемента который стоит после удаленого элемента #include &lt;iostream&gt;...

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

Чтение массива из файла - C++
Здравствуйте! Возникла проблема со считыванием матрицы... for(int i=0;i&lt;y;i++){ for(int j=0;j&lt;x;j++){ fi&gt;&gt;*(ptd+y*i+j); ...

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


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

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

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