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;

}

0 ответов

Другие вопросы по тегам