왜 자꾸 fread도 0만큼 읽어오고 /**/에 ftell부분도 0만 읽어오고 미치겠음
이럴땐 어느 부분을 확인해야 됨?
CString FilePath;
GetDlgItem(IDC_EDIT3)->GetWindowTextA(FilePath);
pFile = fopen(FilePath, "rb");
if(pFile == NULL){
MessageBox("파일 열기 실패");
return;
}
char Data[HEADER_SIZE+sizeof(SendFileInfo)] = {0};
int Header = FILE_SEND_REQUEST;
memcpy(&Data[0], &Header, HEADER_SIZE);
SendFileInfo FileInfo;
strcpy(FileInfo.file_name, FilePath);
fseek(pFile,0,SEEK_END);
/**/ FileInfo.file_size = ftell(pFile);
rewind(pFile);
memcpy(&Data[HEADER_SIZE], &FileInfo, sizeof(SendFileInfo));
SendData(Data, HEADER_SIZE+sizeof(SendFileInfo));
정말 파일의 길이가 0이 아닌지 확인해보고, 그렇지 않으면, 잡다한 코드 모두 주석처리해. memset 같은거 실수로 잘못코딩하면, ftell 같은 함수가 잘못동작할수도 있으니까.
무언가 제대로 동작안한다면, 우선 너무나 당연해보이는 것도 역시 의심해봐. 우선 c:\\test.txt 파일을 만들고 \"abc\"라는 문장하나 저장해. 그리고 fopen (fp, \"c:\\\\test.txt\", \"rb\") 해서 ftell 하면 적절한 길이가 나오는지 확인해봐. 하나씩 하나씩 검증해봐야지. 방법 없어.
Rb가 뭔지 까먹었는데 파일 새로 만들고 읽어오니까 길이가 0인거 아녀?
rb : read only, binary mode.