unsigned char*에 fwrite와 printf사용하기

sada0220의 이미지

unsigned char* 를 이용해서 Data를 읽고 쓰고 있는데요.

unsigned char* temp;
fwrite(temp,1,size,stdout); //temp의 내용이 출력됨
printf("%s", temp); //temp의 내용이 출력되지 않음

왜 이런 결과가 나오는 걸까요..
그리고 디버깅 해보면,"" 이렇게 아무것도 없다구 나오네요.. (실제로 비어있지 않을것이라 생각됨)

익명 사용자의 이미지

일반적으로는 signed char 일 경우 ascii 값을
unsigned char 일 경우 binary 값을 사용합니다.

그리고 정해진 디스크 공간에 data 를 write 하는 fwrite() 와
임시메모리 공간에 print 하는 printf() 와의 출력방식의 차이로도 분명히 있습니다.

printf() 에 %s 대신 %x 를 사용하여 binary 값을 보게하면 string 값은 아니지만 binary 값을 보게 될 것 입니다.

bacon의 이미지

진짜 printf에 의한 출력이 전혀 없었다면 temp[0]이 '\0'이었다에 한표 던집니다.
쓰고보니 오래된 질문이군요.

dndlf2의 이미지

printf("%s", temp); --> printf("%s\n", temp);
출력기준이 \n 입니다.