16진수로 출력한 문자열을 파일에 쓰고, 다시 파일에서 읽어 원래의 문자열로 만드는데 질문드립니다.

dcmru의 이미지

for(i = 0; i

파일에 쓰여진 출력문의 예는 0100ABCDEF 이런식으로 출력이 되게 했습니다. 문자열의 한 문자당 16진수 두개로 매칭이 됩니다.

이것을 다시 문자열로 읽어 들여 원래의 문자열로 만들려고 하는데, 어떻게 해야할지 막혔습니다.

문자열로 읽어 들여 for문과 sscanf를 써서 문자열에서 한문자씩 %02x로 읽어 문자열에 저장을 해봤는데 널문자만 들어갑니다.

unsigned char ch;
sscanf(temp, "%02x", &ch);

이런식으로 해봤습니다. 어떤방법으로 해야 원래의 문자열로 만들 수 있을까요? 파싱 쉬울줄 알았는데, 아니네요 ㅡㅡㅋ

ssehoony의 이미지

scanf 의 man 페이지를 보면

       x      Matches  an  unsigned hexadecimal integer; the next pointer must
              be a pointer to <span>unsigned int</span>.
 
       X      Equivalent to x.
dcmru의 이미지

어떻게 문제를 해결했네요 ^^

unsigned int 를 안쓰고, unsigned char를 써도 되더군요.

그래도 맨페이지에 나와있다니 unsigned int로 썼습니다.

그리고, 키포인트는 temp부분을 2byte 단위로 나눠서 입력해주니 되더군요.

노력만이 살길이다.