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 값을 보게 될 것 입니다.
진짜 printf에 의한 출력이 전혀 없었다면 temp[0]이 '\0'이었다에 한표 던집니다. 쓰고보니 오래된 질문이군요.
printf("%s", temp); --> printf("%s\n", temp); 출력기준이 \n 입니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
re : unsigned char*에 fwrite와 printf사용하기
일반적으로는 signed char 일 경우 ascii 값을
unsigned char 일 경우 binary 값을 사용합니다.
그리고 정해진 디스크 공간에 data 를 write 하는 fwrite() 와
임시메모리 공간에 print 하는 printf() 와의 출력방식의 차이로도 분명히 있습니다.
printf() 에 %s 대신 %x 를 사용하여 binary 값을 보게하면 string 값은 아니지만 binary 값을 보게 될 것 입니다.
진짜 printf에 의한 출력이 전혀 없었다면
진짜 printf에 의한 출력이 전혀 없었다면 temp[0]이 '\0'이었다에 한표 던집니다.
쓰고보니 오래된 질문이군요.
re:unsigned char*에 fwrite와 printf사용하기
printf("%s", temp); --> printf("%s\n", temp);
출력기준이 \n 입니다.
댓글 달기