|
ftell함수가 어떠한 일을 하는지 먼저 공부하셔야 할 듯한데요...
아래와 같이 하셔야지 파일크기가 제대로 들어갈겁니다.
fseek(stream , 0, SEEK_END);
int file_size = ftell(stream);
헤딩슛 님이 쓰신 글 :
: BOOL CMmmmDoc::FileOpen(LPCTSTR lpszFileName)
: {
: m_strFileName = lpszFileName ; //파일 열기 관련 2
:
: FILE *stream = fopen(m_strFileName, "rb");
:
: int file_size = ftell(stream); //여기서 는 값이 들어갑니다 -858993460
: 디버깅에서 file_size 벨류값....
: char *buffer = new char[file_size]; //파일 싸이즈가 안넘어옴 ..... 그러므로 밑에 file_size도 무의미...
: fseek(stream,0,SEEK_SET);
:
:
: //memset(buffer,0,sizeof(char)*200); //이부분 sizeof
:
: while(!feof(stream))
: {
: if(fread(buffer, sizeof(char),file_size,stream) == NULL)
:
: return FALSE;
:
: m_strText.Format("%s", buffer); // Format
:
:
: }
: UpdateAllViews(NULL);
:
: fclose(stream);
:
: return TRUE;
: }
: 원래 동작하던걸 큰용량의 파일을 못불러와
: 파일사이즈 측정후 그만큼의 버퍼를 확보해서 화면에 뿌려줄려는 의도로 고치기 시작했는데요
:
: 파일 싸이즈를 int 선언뒤 new char 에서 값이 0이 됩니다.
: 값을 화면에 안넣고 맴돌다가 마지막것만 화면에 뿌립니다 ㅡㅜ.
:
: 버퍼 선언하는 부분(file_size sizeof 와 strText.Format부분... 어떻게 조치해야 할가여 ㅡㅜ..
|