sprintf에 관한 질문입니다.

bakdorazi의 이미지

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형이 맞는 것 같은데 어떤 에러로 실행이 되지 않는 걸까요?





suapapa의 이미지

딱 그 줄 다음까지라서 그런것 아닌가요?

bakdorazi의 이미지


if(nexGetSystemModelName(sbuf) == NEX_OK)
 { 
 
         printf("%s\n", sbuf);
 
         sprintf(s, "%s.%s", NEX_SYSTEM_OID, sbuf);
}

실행결과는 마찬가지 입니다.

printf 문은 실행되어 sbuf = N564DW 가 나오구요

sprintf 문은 실행되지 않았습니다.

suapapa의 이미지

코드를 잘못 읽었습니다. ^^;

"실행되지 않는다는 것이" trace되지 않는 다는 말이면,
버퍼 s를 다른 곳에서 사용하지 않는다면 컴파일 최적화로 사라져 버린것을 수 있겠는데요.

overcrash의 이미지

문자열 변수 s 를 다른곳에서 따로 출력하나요-?