바이너리파일을 십진수 코드로 출력하는 코드 조언좀 부탁드리겠습니다

조회수 543회

이미지

위의 바이너리코드에서 2칸이 4byte를 나타내며,

0번의 코드에서

첫번째칸 0000 0000 => ID : 0

두번째칸 0000 0000 => Time : 0

세번째칸 0000 0014 => Size : 14 => 20

이므로 10진수로는 20을 나타내는 것으로 이해하였습니다.

즉 다음 10개의 코드 튜플들이 0번의 코드가 되는것이죠.

첫번째 코드튜플인 ac01 은 operation : 01 이고 ac는 10진수로 172이므로 length : 172 가 되는것으로 이해했습니다.

이러한 바이너리 파일을

0 0 20

1 172

0 6

1 132

..... ( 코드튜플 10개 )

1 0 46

.... ( 코드튜플 23개 )

으로 쭉 이어지게 표현이 되게 코드를 쓰는 것이 목표입니다.

그래서 제가 작성한 코드는

#include <stdio.h>

​

typedef struct {

  int pid; //ID

  int arrival_time; //도착시간

  int code_byte; //크기

}process;

​

int main() {

  process buffer;

  FILE* fp;

  fp = fopen("test.bin", "rb");

  if (fp == NULL) {

    fprintf(stderr, "파일열기 실패");

    return 1;

}

else {

  while (!feof(fp)) {

    fprintf(stdout, "%d %d %d\n", buffer.pid, buffer.arrival_time, buffer.code_byte);

    int s = fread(&buffer, sizeof(buffer), 1, fp);

    /* 여기서부터 막히네요..



    for (int i = 0; i < s; i++) {

      printf("%d %d", buffer.arrival_time, buffer.code_byte);

    }

  }

​

   */

}

fclose(fp);

return 0;

위의 코드에서 fread 를 통해 바이너리 파일을 읽고 그 사이즈를 반복문을 통해 튜플들을 표현하는 코드를 작성하려고 하는데 질문이 있습니다.

  1. 제가 원하는 방법은 fread 를 통해 나온 값을 반복문에 넣으면서 0 0 20 의 사이즈만큼 반복을 하는 것인데 위의 코 드가 제가 원하는 방향이 맞나요??

  2. 위의 코드에서 에러가 나오는데 어떤 부분이 문제인걸까요??

  3. 코드 튜플을 표현하려면 또 다른 구조체를 만들어서 표현해야하는 것 같은데 어떻게 표현할 수 있을까요??

긴 글 읽어주셔서 감사합니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)