Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Нужна функция загрузки в массив


Автор: Elfet 9.8.2004, 08:48
Есль файл например такой:
0|0|0|0|0|
0|1.2|2|1.2|0|
0|0|0|0|0|

И его нада загрузить в массив:
double phm[700][700];

И узнать количество строк и столбцов.



Вот мой ужасный вариант , который не работает:
Код
void LoadRawFile(char *fname)
{
MAP_SIZE=0;
FILE *in;
FILE *out;
FILE *in2;
if((in=fopen(fname, "rt"))==NULL)
{
 MessageBox(NULL, "Can't Find The Height Map!", "Error 1", MB_OK);
 return;
}
char getch[10000];
int lx=0, lz=0;
while(!feof(in))
{
 int getline;
 fscanf(in, "%s\n", &getch);
 if((out=fopen("readline.openimap", "w"))==NULL){MessageBox(NULL, "Error 2", "Error 2", MB_OK);return;}
 fprintf(out, getch);
 fclose(out);
 if((in2=fopen("readline.openimap", "r"))==NULL){MessageBox(NULL, "Error 3", "Error 3", MB_OK);return;}
 while(!feof(in2))
 {
 fscanf(in2, "%d|.", &getline);
 pHeightMap[lx][lz]=getline;
 lz++;
 MAP_SIZE_Z+=lz;
 }
 fclose(in2);
 lx++;
 MAP_SIZE_X+=lx;
}
fclose(in);  f->Caption=pHeightMap[50][50];
}


Прошу помощи sample.gif

Автор: chipset 9.8.2004, 08:51
Переработать структуру файла можно?

Автор: Elfet 9.8.2004, 08:53
угу, можно

Автор: Elfet 9.8.2004, 11:04
Спасибо, Chipsetу :
Изменил структуру файла на
MAP_SIZE_X|MAP_SIZE_Z|213|345|234|23|.....
Код

void Tf::LoadRawFile(char *fname)
{
MAP_SIZE_X=MAP_SIZE_Z=0;
FILE *in;
if((in=fopen(fname, "r"))==NULL)
{
 MessageBox(NULL, "Can't Find The Height Map!", "Error", MB_OK);
 return;
}
int geth;
int lx=0, lz=0;
fscanf(in, "%d|%d|", &MAP_SIZE_X, &MAP_SIZE_Z);
while(!feof(in))
{
fscanf(in, "%d|", &geth);
pHeightMap[lx][lz]=geth;
lz++;
if(lz==MAP_SIZE_Z)
 {
  lz=0;
  lx++;
 }
}
fclose(in);
}


smile.gif

Автор: Олег М 9.8.2004, 11:14
А если так (грубо)
Код

char szBuf[256],*ptr;
int i(0),j(0);
ptr=szBuf;
while (!feof(in2))
{
char ch=fgetc(in2);
switch (ch)
{
case '|': *ptr=0; ptr=szBuf; phm[i++][j]=atof(szBuf); break;
case '\n': i=0; ++j; break;
default: *(ptr++)=ch;
}
}

Автор: Elfet 9.8.2004, 12:03
моно и так, ещё варианты? smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)