'programming/C_C++'에 해당되는 글 279건

  1. 2016.10.25 sprintf 포맷 복사

반응형

 

$ 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]

 

반응형
Posted by 공간사랑
,