2014-02-22 2 views
0

바이너리 파일을 읽고 2 바이트 자리로 각 바이트를 인쇄하려고하는데, 공간에 도달하면 내 프로그램이 '20'이 될 때 '0'을 인쇄하고 세드릭은C에서 바이너리 파일 읽기 잘못된 출력

20 17 FF FF FF FF 20 20 17 FF FF FF FF FF 20 20 20 FF 20 20 

사람이 알고 있지 http://www.percederberg.net/tools/text_converter.html에서 매 20

내 출력 0 17 FF FF FF FF 0 0 17 FF FF FF FF FF 0 0 0 FF 0 0

출력이 무엇입니까? 파일 = ÿÿÿÿ ÿÿÿÿÿ ÿ

//Read the test.bin file!! 
#include<stdio.h> 
    char initial[] = "test.bin"; 
struct rec{ 
    unsigned char mydata; 
}; 
int readfile(char []){ 
    int counter; 
    FILE *ptr_myfile; 
    struct rec my_record; 
    ptr_myfile=fopen(initial,"r"); 
    if (!ptr_myfile){ 
     printf("Unable to open file!"); 
     return 1; 
    } 
    for (counter=1; counter <= 20; counter++){ 
     fread(&my_record,sizeof(struct rec),1,ptr_myfile); 
     printf("%X\n",my_record.mydata);  
    } 
    fclose(ptr_myfile); 
    return 0; 
} 
int main(){ 
    readfile(initial); 
    return 0; 
} 
+0

'fread()'의 반환을 확인해야합니다. test.bin이 빈 파일이면 프로그램에서 어떤 일이 발생합니까? –

+0

파일이 바이너리 인 경우 바이너리 모드로 [열기] (http://en.cppreference.com/w/c/io/fopen)해야합니다. –

+0

파일에 실제로 0x20의 파일이 있는지, 즉 16 진수 편집기 또는 16 진수 덤프로 보았습니까? 아니면 유일한 온라인 변환기일까요? – Arkku

답변

0

코드가 제대로 작동하지만 0x00 바이트 엔드까지이 ASCII와 호환 문자 세트의 값 0x20이 공간으로 바뀌 웹 사이트에 바이너리 데이터를 copypasting한다.

+0

아. 16 진수 -> 2 진수로 변환 할 사이트 – bakalolo