반응형
파일을 바이트 배열로 읽기
허프만 알고리즘을 코딩하는 과제가 있습니다.머릿속에 문제가 다 정리되어 있는데 파일 처리에 문제가 좀 있습니다.
문제는 알고리즘이 모든 종류의 파일을 압축하도록 되어 있다는 것입니다.
내 해결책: 파일을 바이트 배열로 읽은 다음,int array[256]={0}
각 바이트에 대해, 그것을 얻으라.int n
해당 값 및 증가 값array[n]
. 제가 분명히 말하지 않았다면, 저에게 알려주세요.
그래서 많은 조사를 해봤지만, 어떤 종류의 파일에서도 바이트를 얻는 방법과 그것을 어떻게 처리해야 하는지 이해가 되지 않습니다.
FILE *fileptr;
char *buffer;
long filelen;
fileptr = fopen("myfile.txt", "rb"); // Open the file in binary mode
fseek(fileptr, 0, SEEK_END); // Jump to the end of the file
filelen = ftell(fileptr); // Get the current byte offset in the file
rewind(fileptr); // Jump back to the beginning of the file
buffer = (char *)malloc(filelen * sizeof(char)); // Enough memory for the file
fread(buffer, filelen, 1, fileptr); // Read in the entire file
fclose(fileptr); // Close the file
이제 파일 내용을 포함하는 바이트 배열이 있습니다.
바이너리 파일 IO를 시도해 보는 것은 어떨까요?
FILE *f=fopen("example.bin","rb");
char c;
//loop for each byte to the end
{
size_t fread(&c, (size_t)1, (size_t) 1, f);
array[c]++;
}
아니면 줄을 따라서!!
언급URL : https://stackoverflow.com/questions/22059189/read-a-file-as-byte-array
반응형
'programing' 카테고리의 다른 글
웹 페이지에서 테이블을 Excel로 내보내려면 어떻게 해야 합니까? (0) | 2023.10.20 |
---|---|
Angular를 안전하게 청소하는 방법지시문의 JS 이벤트 바인딩 (0) | 2023.10.20 |
다수의 커밋을 비상호작용적으로 스쿼시할 수 있는 방법이 있습니까? (0) | 2023.10.20 |
바닥이 왜 이렇게 느려요? (0) | 2023.10.20 |
커널 프로그래밍에서 서명되지 않은 int 대신 u8 u16 u32 u64가 사용되는 이유는 무엇입니까? (0) | 2023.10.20 |