ifstream не читает файл egm
Я пытался получить read_EGM для чтения и сохранения данных в указателях, упомянутых в сигнатуре функции. По какой-то причине, когда я пытаюсь выполнить файл, после ввода имени файла буквально ничего не распечатывается. Даже 3 не напечатано! Я не вижу, что не так с моим кодом. Каковы ваши предложения.
Спасибо, что нашли время ответить.
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstring>
#include <string>
#include <cstdio>
using namespace std;
void read_EGM(string fname,char header[3],int*nc, int*nr, int*min, int*max, int*x_scale,int*y_scale,int*pix);
void write_PGM(string fname, int *nc, int * nr, int * mv, int *pix);
void read_binary_EGM(string fname, char egm_type[8], int hdr_info[6], int *pix);
void read_EGM(string fname, char header[3],int*nc,int*nr,int*min,int*max,int*x_scale, int*y_scale,int*pix)
{
ifstream ifs;
ifs.open(fname.c_str(),ifstream::in);
if (!ifs)
{ cerr << "Error! Can't open file for reading" << endl; exit(1); }
ifs >> header;
#if 0
if (strstr(header,"E1") == NULL)
{
ifs.close();
read_binary_EGM(string fname, char egm_type[8], int hdr_info[6], int *pix);
}
else
#endif
ifs >> *nc;
ifs >> *nr;
ifs >> *min;
ifs >> *x_scale;
ifs>> *y_scale;
ifs >> *max;
cout << *nc << endl;
int SIZE = (*nc)*(*nr);
pix = new int[SIZE];
int pixel = 0;
for ( int i = 0; i < SIZE; i++)
{
ifs >> pixel;
pix[i] = pixel;
}
ifs.close();
}
int main(void)
{
string fname = "";
cout << "Enter filename: ";
cin >> fname;
char hdr[3];
int * ncol = NULL;
int * nrow = NULL;
int * minimum = NULL;
int *maximum = NULL;
int *x_scal = NULL;
int *y_scal = NULL;
int *pix_arr = NULL;
read_EGM(fname,hdr,ncol,nrow,minimum,maximum,x_scal,y_scal,pix_arr);
cout << 3 << endl;
cout << hdr << endl;
cout << *ncol << endl;
cout << *nrow << endl;
cout << *minimum << endl;
cout << *maximum << endl;
cout << *x_scal << endl;
cout << *y_scal << endl;
for ( int i = 0; i < ((*ncol)*(*nrow)) ; i++)
{
cout << pix_arr[i] << endl;
}
delete[] pix_arr;
return 0;
}