1
어떻게 fread()
이 사용되는지 혼란 스럽습니다. 다음은 cplusplus.comfread() 이후 메모리 버퍼에 액세스
/* fread example: read a complete file */
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE * pFile;
long lSize;
char * buffer;
size_t result;
pFile = fopen ("myfile.bin" , "rb");
if (pFile==NULL) {fputs ("File error",stderr); exit (1);}
// obtain file size:
fseek (pFile , 0 , SEEK_END);
lSize = ftell (pFile);
rewind (pFile);
// allocate memory to contain the whole file:
buffer = (char*) malloc (sizeof(char)*lSize);
if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}
// copy the file into the buffer:
result = fread (buffer,1,lSize,pFile);
if (result != lSize) {fputs ("Reading error",stderr); exit (3);}
/* the whole file is now loaded in the memory buffer. */
// terminate
fclose (pFile);
free (buffer);
return 0;
}
에서 예제의 내가 아직 fclose()
를 사용하지 않는 것이 가정 해 봅시다이다. buffer
을 배열로 처리하고 buffer[i]
과 같은 요소에 액세스 할 수 있습니까? 아니면 다른 것을해야합니까?
이진 파일을 읽을 때 각 요소의 유형은 무엇입니까? 나는이 경우에 그들은 모두'char's라는 느낌을 가지고 있습니다. 그들은 모두 같은 유형이어야합니까? 왜냐하면 나는 두 배의 값과 몇개의 16 진 값을 가지고 있기 때문이다. 귀하의 답변에 감사드립니다. –
바이너리 파일에 대한 좋은 점은, 문제가없는 정확한 레이아웃을 알고 있다면 파일 내에서 바이너리 데이터의 레이아웃이 동일한 구조체를 정의 할 수 있으며 (엔디안이 맞다면) 직접 데이터를 가질 수 있다는 것입니다 사용할 준비가되었습니다. 내 편집을 확인하십시오. – Jack