PDA

Показать полную графическую версию : Чтение из бинарного файла формата GRD


Violetta_
19-05-2012, 17:52
Здравствуйте, в моей программе мне нужно считать данные из GRD файла. Казалось бы все очень просто, данные в GRD файле расположены так: СССС, N_x, N_y, X_min, X_max, Y_min, Y_max, Z_min, Z_max, H[N_x][N_y]; Вот кусок кода. который должен считать эти данные с этого файла:

#include<conio.h>
#include<iostream>

using namespace std;

#define N 944

int main(){

//ВЫДЕЛЕНИЕ ПАМЯТИ ПОД ДИНАМИЧЕСКИй МАССИВ
double **H;
H = (double**)calloc(sizeof(double*),N);
for(i = 0; i<N; i++){ H[i] = (double*)calloc(sizeof(double),N); }

//считываение с jrd файла
int n = 4;
char *C = (char*)calloc(sizeof(char),n);
short int N_x, N_y;
double X_min, X_max, Y_min, Y_max, Z_min, Z_max;

FILE *fp;
fp=fopen("H200.grd", "rb");

if((fp=fopen("H200.grd", "rb")) == NULL){
cout<<"Не удается открыть файл\n";
system("pause");
return 1;
}

fread(C, sizeof(char), 4, fp);
for(i=0; i<4; i++) cout<<C[i]<<" , ";
cout<<endl;

fread(&N_x, sizeof(short int), 1, fp);
cout << N_x << " , ";

fread(&N_y, sizeof(short int), 1, fp);
cout << N_y << endl;

fread(&X_min, sizeof(double), 1, fp);
cout <<"X_min = "<< X_min << endl;

fread(&X_max, sizeof(double), 1, fp);
cout <<"X_max = "<< X_max << endl;

fread(&Y_min, sizeof(double), 1, fp);
cout <<"Y_min = "<< Y_min << endl;

fread(&Y_max, sizeof(double), 1, fp);
cout <<"Y_max = "<< Y_max << endl;

fread(&Z_min, sizeof(double), 1, fp);
cout <<"Z_min = "<< Z_min << endl;

fread(&Z_max, sizeof(double), 1, fp);
cout <<"Z_max = "<< Z_max << endl;

fclose(fp);



но проблема в том, что он даже не может открыть этот файл, не может его найти, даже когда я к нему полный путь указываю, ошибка выскакивает на этапе отладки программы если не писать условие"if((fp=fopen("H200.grd", "rb")) == NULL){
cout<<"Не удается открыть файл\n";
system("pause");
return 1;
}" то получается ошибка "Библиотека времени выполнения Microsoft Visual Studio C обнаружила неустранимую ошибку в Курсовая_работа.exe." файл лежит в папке с самой программой .exe
в чем ошибка? помогите разобраться...

ferget
20-05-2012, 01:40
дело в том, что при запуске из-под VS рабочим каталогом считается тот, где лежат файлы .cpp, а не тот где лежит exe, переложите файл H200.grd

Delirium
20-05-2012, 08:43
переложите файл H200.grd »
Или укажи на время тестирования полный путь до файла.

Violetta_
20-05-2012, 19:45
спасибо всем большое! все заработало))))




© OSzone.net 2001-2012