printf()는 여러 서식들을 조합해서 출력해주는 역할을 한다. 근데 출력말고, 이를 변수에 저장해서 활용할 때가 필요하다.
sprintf() 함수는 출력하는 값을 변수에 저장하는 기능을 한다. printf()가 출력하는 함수라면 sprintf()는 출력값을 문자열에 저장하는 함수이다.
int sprintf(char *str, const char *format, ....);
문자열 변수 str에 쓰기가 성공한 문자 개수가 반환된다.
char *str : 출력값을 저장할 문자열
const char *format : 서식 문자열
#include <stdio.h>
#include <string.h>
int main(){
char msg1[50] = {0x00, }, msg2[50] = {0x00,}, msg3[50] = {0x00,};
int y = 2023; int m = 10; int d = 12;
sprintf(msg1, "hello"); //msg에 단순 문자열 저장
printf("%s\n", msg1);
sprintf(msg2, "%s world!", msg1); //msg2에 "msg1문자열 내용 + world!"
printf("%s\n", msg2);
sprintf(msg3,"%s%.6s 오늘은 %d%d%d", msg1, msg2 + strlen(msg1) , y, m, d); // msg3에 문자열과 숫자 조합해서 저장
printf("%s\n", msg3);
return 0;
}
strlen()함수는 널문자가 나타날 때까지 길이를 카운트 한다. sprintf() 함수로 만든 msg1문자열의 strlen값이 5라는 것은, sprintf()로 문자열을 만들 시 마지막에 널문자를 자동으로 넣는것을 의미한다.
#include <stdio.h>
#include <string.h>
int main(){
char msg1[50] = {0x00,}, msg2[50] = {0x00,}, msg3[50] = {0x00,};
int y = 2023; int m = 10; int d = 12;
int len = sprintf(msg1, "hello"); //msg에 단순 문자열 저장
printf("%d %d : %s \n", len, strlen(msg1), msg1);
len = sprintf(msg2, "%s world!", msg1); //msg2에 "msg1 문자열 내용 + world!"
printf("%d %d : %s \n", len, strlen(msg2), msg2);
//msg3에 문자열과 숫자 조합해서 저장하기
len = sprintf(msg3, "%s%.6s 오늘은 %d%d%d", msg1, msg2 + strlen(msg1), y, m, d);
printf("%d %d : %s \n", len, strlen(msg3), msg3);
return 0;
}