sprintf에 관한 질문입니다.
글쓴이: bakdorazi / 작성시간: 수, 2010/10/20 - 3:39오후
int nexGetSystemModelName(char *s); int GetTest(char *s) { #if defined(N564) char sbuf[256]; if(nexGetSystemModelName(sbuf) == NEX_OK) printf("%s\n", sbuf); sprintf(s, "%s.%s", NEX_SYSTEM_OID, sbuf); #else ...... } NEX_SYSTEM_OID : 1.3.6.1.4.1.50000
printf("%s\n", sbuf); <== 이것은 실행이 되어서 값으로 N564DW가 찍힙니다.
그러나 위의 sprintf 문장이 실행이 되지 않습니다.
sprintf(s, "%s.%u", NEX_SYSTEM_OID,sbuf);
로 바꾸면 실행이 되는데 실행된 값은
1.3.6.1.4.1.50000.345623
이렇게 나오네요...
제가 볼 때 sbuf는 %s형이 맞는 것 같은데 어떤 에러로 실행이 되지 않는 걸까요?
Forums:
if 문의 범위가
딱 그 줄 다음까지라서 그런것 아닌가요?
if문에 {} 괄호 넣어보고 했는데요..
실행결과는 마찬가지 입니다.
printf 문은 실행되어 sbuf = N564DW 가 나오구요
sprintf 문은 실행되지 않았습니다.
네 상관 없군요.
코드를 잘못 읽었습니다. ^^;
"실행되지 않는다는 것이" trace되지 않는 다는 말이면,
버퍼 s를 다른 곳에서 사용하지 않는다면 컴파일 최적화로 사라져 버린것을 수 있겠는데요.
-_-
문자열 변수 s 를 다른곳에서 따로 출력하나요-?
댓글 달기