fwrite함수로 이진파일에 작성할때!

조회수 1375회
#include <stdio.h>

int main(){
    FILE * fp;
    char* a="all_new";
    fp=fopen(data.bin,"wb+");
    fwrite(a,200,1,fp);

}

을하고 data.bin 을보니

이미지

이렇게 쓰레기값들이 들어가더라고요 7부분을 초과하는 부분들은 그냥 CC CC CC CC...로 채우고 싶은데 어떻게 해야하나요?

1 답변

  • a가 NULL문자 포함해서 8바이트인데 200바이트를 파일에 썼기 때문에 문제가 됩니다.

    #include <stdio.h>
    #include <string.h>
    
    int main(){
        FILE * fp;
        char a[200];
        memset(a, 0xCC, sizeof(a));
        strcpy(a, "all_new");
        fp=fopen("data.bin","wb+");
        fwrite(a,200,1,fp);
        fclose(fp);
    }
    

    memset은 버퍼를 지정한 문자로 초기화하는 함수입니다. 위에처럼 하면 a버퍼가 0xCC로 초기화됩니다. strcpy는 문자열을 복사하는 명령어로 "all_new"를 a버퍼로 복사하게 됩니다. 그리고 제일 밑에 파일 닫는 부분도 추가해 주었습니다.

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

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

(ಠ_ಠ)
(ಠ‿ಠ)