일단 이게 소스입니다.
목적은 file이 끝날 때까지 반복해서 vector s값을 읽어오는 겁니다.
[code]
int I_f_student(vector <Student> &s) {
                ifstream inout;
        inout.open("Student.dat", ios::in | ios::binary);

        if(inout.fail()) {
                cout << "file doesn't exist";
                cout << "Exit program";
                        return 0;
        }
        while(!inout.eof()) {
                inout.read((char * ) &s[i], sizeof(s[i]));
                s.push_back(s[i]);
                i++;
        }

        inout.close();
        cout << "file read:Done" << endl;
        return 0;
}
[/code]

문제는 while(!inout.eof())  구문인데요.
여기서 file 형식일 일치하지 않으면 무한루프를 돌게 되서요. 제가 듣기로는 2가지 해결책이 있다고 하는데,

1. debug로 file pointer를 검색해주고 억지로 파일 크기를 끼워 맞춘다.
   1번 해결책은 디버그를 해도, file pointer인자를 찾을 수가 없구요.
   cplusplus.com에서 찾아봐도, stream class의 fpt는 아예 나오질 않은 것 같습니다.
   거기다가 억지로 파일 크기를 맞추는 코딩도 아직 개념자체를 모르겠구요.

2. getc나 fgetc로 file의 1bite씩 검색하여 EOF를 찾아낸다.
2번 해결책이 그나마 희망을 가져볼 수 있는데요.
문제는 위 소스에서 보듯이 제가 FILE * fp 같은 코딩을 아예 안하거든요.
이번 과제가 istream과 fstream을 이용하여 file을 저장하고 읽기인데...
참고 소스들을 봐도, 모두 C언어에서 쓰는 FILE *fp 를 이용한 방법인데요.

제가 정말로 몰라서 그러는데, fsteam에 file pointer가 있기는 한건지,
getc로 1bite씩 읽어 올려고 해도 steam은 FILE *형과 달라서 아예 적용이 불가능하네요.


모처럼 c++을 배우는데, 이번 과제만큼 난관을 겪어본적이 없습니다.
차라리 이중 포인터를 꼬았을 때가 행복한데요.
도와주시면 정말 감사드리겠습니다.