snprintf() — 형식화된 데이터를 버퍼로 출력

형식

#include <stdio.h>
int snprintf(char *buffer, size_t n, const char *format-string,
             argument-list);

언어 레벨

ANSI

스레드세이프

로케일 감지

이 함수의 작동은 현재 로케일의 LC_CTYPE 및 LC_NUMERIC 범주에 영향을 받을 수 있습니다. 작동은 LOCALETYPE(*LOCALEUCS2) 또는 LOCALETYPE(*LOCALEUTF)가 컴파일 명령에서 지정되면 현재 로케일의 LC_UNI_CTYPE 범주에 영향을 받을 수도 있습니다. 자세한 정보는 CCSID 및 로케일 이해의 내용을 참조하십시오.

설명

snprintf() 함수는 배열 버퍼에 일련의 문자와 값의 형식을 지정하고 저장합니다. argument-list가 변환되며 format-string의 해당 형식 스펙에 따라 만들어집니다. snprintf() 함수는 n 인수가 추가된 sprintf() 함수와 동일하며, 버퍼에 작성될 최대 개수의 문자(끝 널 문자 포함)를 표시합니다.

format-string은 일반 문자로 구성되며 printf() 함수에 대한 형식 스트링과 같은 형식과 함수가 있습니다.

리턴값

snprintf() 함수는 끝 널 문자를 계산하지 않고 배열에 작성된 바이트 수를 리턴합니다.

이 예는 snprintf()를 사용하여 다양한 데이터의 형식을 지정하고 출력합니다.

#include <stdio.h>

char buffer[200];
int i, j;
double fp;
char *s = "baltimore";
char c;

int main(void)
{
   c = 'l';
   i = 35;
   fp = 1.7320508;

   /* Format and print various data */
   j = snprintf(buffer, 6, "%s\n", s);
   j += snprintf(buffer+j, 6, "%c\n", c);
   j += snprintf(buffer+j, 6, "%d\n", i);
   j += snprintf(buffer+j, 6, "%f\n", fp);
   printf("string:\n%s\ncharacter count = %d\n", buffer, j);
}

/*********************  Output should be similar to:  *************

string:
baltil
35
1.732
character count = 15           */