char tmp3; tmp3 = 'A'; sscanf(&tmp3, "%d", &tmp2); printf("calling num2 : %X %d\n", tmp3, tmp2);
이게 왜 안돼는 거죠.
char tmp3; tmp3 = 'A'; sscanf(&tmp3, "%d", &tmp2); printf("calling num2 : %X %d\n", tmp3, tmp2); 이게 왜 안돼는 거죠.
sscanf는 첫번째 인자는 문자열입니다. 님의 코드로 볼땐...
char tmp3[] = "A"; sscanf(tmp3, "%d", &tmp2);
형식으로 되어야 합니다.
char tmp3을 &tmp3 으로 억지로 입력하면... 메모리의 tmp3 다음의 값이 뭐가 올지 모르는데.. 예측할 수 없는 결과가 나올것 같습니다.
그런데... 문자열에 A가 들어있는데.. %d로 읽으면 어떻게 될까요?
당연히 안되죠. 첫번째문제점.. tmp2를 정의하지 않았다. int tmp2; 를 명시해주어야 합니다.. 기본중에 기본..
두번째 'A'는 int가 아니니깐 sscanf의 "%d" 로는 못받습니다. "A" 16진수의 그것이라면 "%x"로 해야 하는것이고, 혹시 A의 아스키값을 넣고 싶다면, temp2 = 'A'; 라고 해야 하는것입니다.
자세한건 man sscanf 해서 읽어보십시오..
텍스트 포맷에 대한 자세한 정보
<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: 이코드가 왜 안되는건지 좀 알려주세요
sscanf는 첫번째 인자는 문자열입니다.
님의 코드로 볼땐...
형식으로 되어야 합니다.
char tmp3을 &tmp3 으로 억지로 입력하면...
메모리의 tmp3 다음의 값이 뭐가 올지 모르는데.. 예측할 수 없는 결과가 나올것 같습니다.
그런데... 문자열에 A가 들어있는데.. %d로 읽으면 어떻게 될까요?
Re: 이코드가 왜 안되는건지 좀 알려주세요
당연히 안되죠.
첫번째문제점..
tmp2를 정의하지 않았다.
int tmp2;
를 명시해주어야 합니다.. 기본중에 기본..
두번째 'A'는 int가 아니니깐 sscanf의 "%d" 로는 못받습니다.
"A" 16진수의 그것이라면 "%x"로 해야 하는것이고,
혹시 A의 아스키값을 넣고 싶다면,
temp2 = 'A'; 라고 해야 하는것입니다.
자세한건 man sscanf 해서 읽어보십시오..
댓글 달기