2011-03-24 5 views
2

버퍼 (char *)로 읽어야하는 파일이 있지만 문제는 파일에 유효한 텍스트 사이에 "재미있는 문자"가 있다는 것입니다. 나는 다음과 같은 몇 가지 코드를 작성할 때유효한 텍스트 사이에 NUL 문자를 포함하여 파일의 모든 내용을 읽는 방법은 무엇입니까?

enter image description here

그래서 :

버퍼 = 헤더

:

FILE *fp; 
    if((fp = fopen(".\\test.txt", "rt"))==NULL){ 
    printf("Cannot open file2\n"); 
    } 

    fseek(fp, 0, SEEK_END); 
    long int fsize = ftell(fp); 
    rewind(fp); 
    //char *buffer2 = malloc(fsize * sizeof(char)); 
    buffer = malloc(fsize * sizeof(char)); 
    fread(buffer, 1, fsize, fp); 
    buffer[fsize] = '\0'; 
    fclose(fp); 

    printf("fsize = %i\n", fsize); 
    printf("Buffer = %s\n", buffer); 

을 다음과 같이 그것은 단지 텍스트 파일의 첫 부분을 출력

그리고 분명히 첫 번째 NUL char에서 멈 춥니 다.

재미있는 문자를 포함하여 파일의 전체 버퍼를 읽을 수있는 방법이 있습니까?

또는 C에서 가능하지 않습니까?

FSIZE가 올바르게 읽어

, 단지 FREAD는 전체 버퍼 ;-(

어떤 도움을 크게 ;-)

감사

린톤을 감상 할 수있다

UPDATE를 읽지 않습니다 : OK, 나는 바보가되고 ..... 파일에 버퍼를 쓰면 그 안에 모든 것이 들어 있습니다. 화면에 쓰는 경우에만 null로 끝나기 때문에 괜찮습니다.

답변

1

파일을 "텍스트"모드 ("rt")로 열지 말고 대신 이진 모드 ("rb")를 사용하십시오.

또한 데이터를 읽는 것이 좋지만 printf("Buffer = %s\n", buffer)은 첫 번째 NUL까지만 인쇄하므로 디버그가 원하는대로 처리되지 않습니다. 아마도 약간의 16 진수 덤핑 함수를 작성하고 싶을 것입니다.

관련 문제