$ vi a.c
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char *string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char buffer[10 + 1];
// memset(buffer, 0x00, sizeof(buffer));
// sprintf(buffer, "%s", string); // buffer에 string을 복사 - string변수 안에 문자열이 buffer 사이즈보다 크기 때문에 에러 발생
// fprintf(stdout, "[%s]\n", buffer);
memset(buffer, 0x00, sizeof(buffer));
sprintf(buffer, "%.*s", sizeof(buffer)-1, string); // buffer의 사이즈에 맞도록 복사가 발생
fprintf(stdout, "[%s]\n", buffer);
memset(buffer, 0x00, sizeof(buffer));
sprintf(buffer, "%*d", sizeof(buffer)-1, 1234); // 숫자 1234가 buffer의 사이즈에 맞게 우측 정렬
fprintf(stdout, "[%s]\n", buffer);
memset(buffer, 0x00, sizeof(buffer));
sprintf(buffer, "%-*d", sizeof(buffer)-1, 1234); // 숫자 1234가 buffer의 사이즈에 맞게 좌측 정렬
fprintf(stdout, "[%s]\n", buffer);
memset(buffer, 0x00, sizeof(buffer));
sprintf(buffer, "%0*d", sizeof(buffer)-1, 1234); // 숫자 1234가 buffer의 사이즈에 맞게 우측 정렬이 되면서 빈 공간을 0으로 채워짐.
fprintf(stdout, "[%s]\n", buffer);
}
$ ./a.out
[ABCDEFGHIJ]
[ 1234]
[1234 ]
[0000001234]