Консультация № 65835
06.12.2006, 19:41
0.00 руб.
0 2 2
Как считать массив из файла. Массив одномерный A[16]. Знаю, что циклом. Каким лучше и меньше будет использовать памяти? И есть ли другие способы считывать без использования цикла?

Обсуждение

Неизвестный
06.12.2006, 20:24
общий
это ответ
Здравствуйте, Spenser!

Здесь все зависит от того, в каком виде массив записан в файл. Если это обычный ASCII - файл, в котором отдельные числа разделены пробелами, то можно например использовать для этого класс ifstream и цикл for(while). Если файл бинарный, можно использовать, например, стандартные функции WinAPI и считывать весь массив целиком. Код, реализующий оба способа - в приложении


Приложение:
//1-й вариант организации файла#include <fstream.h>int main(){ifstream in("in.txt");int A[16];for (int i=0; i<16; i++) { if (!in.eof()) in>>A; else break;}in.close();return 0;}//2-й способ. Файл - бинарный#include <windows.h>int main(){HANDLE in = CreateFile("in.dat",GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);if (in==INVALID_HANDLE_VALUE) return -1;int A[16];DWORD nBytes;ReadFile(in,(LPCVOID)A,16*sizeof(int),&nBytes,0);CloseHandle(in);return 0;}
Неизвестный
07.12.2006, 02:39
общий
это ответ
Здравствуйте, Spenser!

Непонятно какой тип данных у вас в массиве и какой формат файла который вы собираетесь считывать. По-поводу цикла - можно использовать любой какой по душе, например:

for(int i=0; i<16; i++) {

fscanf(...);
}

или

while(fscanf(...) != EOF) {
}

А читать файлы можно и без цикла, т.е. за раз считать его в память. Но разбирать считанные данные в массив все равно придется в цикле.
Форма ответа