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.50000printf("%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문에 {} 괄호 넣어보고 했는데요..
if(nexGetSystemModelName(sbuf) == NEX_OK) { printf("%s\n", sbuf); sprintf(s, "%s.%s", NEX_SYSTEM_OID, sbuf); }실행결과는 마찬가지 입니다.
printf 문은 실행되어 sbuf = N564DW 가 나오구요
sprintf 문은 실행되지 않았습니다.
네 상관 없군요.
코드를 잘못 읽었습니다. ^^;
"실행되지 않는다는 것이" trace되지 않는 다는 말이면,
버퍼 s를 다른 곳에서 사용하지 않는다면 컴파일 최적화로 사라져 버린것을 수 있겠는데요.
-_-
문자열 변수 s 를 다른곳에서 따로 출력하나요-?
댓글 달기