C 기초 질문입니다.

하하의 이미지

기초적인 질문 입니다.

10번은 더 생각해보고 고쳐 보지만 답이 안나와

이렇게 글을 올립니다.

우선 코드를 보면

Quote:

main()
{
char *a;
int i=11;

a = (char *)malloc(5);

snprintf(a, 5, "%d", i);
printf(" [%s][%x] \n", a, a);

snprintf(a, 6, "%05s", a);
printf(" [%s][%x] \n", a, a);
}

제가 할려는 것은

int 형 변수명 i 그 값은 11인 것을

char * 형 그러니깐 "00011\0" 으로 만들고 싶은 것입니다.

[만들어 보기]

1. 우선 snprintf를 사용해 char *로 변환해 값 "11\0"을 a에 집어넣는다.

2. 다시 snprintf를 사용해 a의 값을 "00011\0" 형식으로 컨버전후
a에 집어넣는다.

[결과]

Linux :
[11][a의 주소]
[ ][a의 주소(위와 동일)]

Unix :
[11][20b50]
[00000][20b50]

무엇이 잘 못 된 건가요?

감사합니다.

즐거운 하루 되세요.....

맹고이의 이미지

이렇게 하면 될것 같은데요...

#include <stdio.h>
#include <stdlib.h>

int main() {
        char *a;
        int i = 11;

        a = (char *)malloc(6);
        snprintf(a, 6, "%05d", i);

        printf("[%s][%x]\n", a, a);
        free(a);
        return 0;
}
monpetit의 이미지

snprintf(a, 6, "%05s", a); 이게 아니라 snprintf(a, 6, "%05d", i); 가 아닌가요?

그리고 a에다가 다시 a를 출력해서는 안됩니다. char* b 같은 걸로 다시 만들어서 출력하세요.