Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

문타쿠, 공부하다.

[C언어 코딩 도장] Unit 43. 문자열 만들기 본문

C언어/C언어 코딩 도장

[C언어 코딩 도장] Unit 43. 문자열 만들기

개발새발 문타쿠 2023. 10. 2. 18:54

43.1 서식을 지정하여 배열 형태로 문자열 만들기

지금까지 사용한 printf 함수는 문자열을 화면에만 출력할 수 있었다.

그럼 화면에 출력하지 않고 문자열을 만들어서 따로 저장할 수 없을까?

->이때 사용하는 것이 sprintf 함수

 

sprintf 함수?

-> 서식(format)을 지정하여 문자열을 만들 수 있으며, stdio.h 헤더 파일에 선언되어 있다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    char s1[20];

    // "Hello, %s"로 서식을 지정하여 s1에 저장
    sprintf(s1, "Hello, %s", "world!");

    printf("%s\n", s1);

    return 0;
}

sprintf 함수로 문자열을 생성할 때 사용하는 배열이나 메모리 공간(포인터)을 버퍼(buffer)라고 부른다.


서식 지정자를 사용할 수 있는 만큼 C언어의 다양한 값(자료형)도 문자열로 만들 수 있다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
    char s1[30];

    sprintf(s1, "%c, %d, %f, %e", 'a', 10, 3.2f, 1.123456e-21f);

    printf("%s\n", s1);

    return 0;
}


43.2 서식을 지정하여 문자열 포인터에 문자열 만들기

문자열 포인터에 문자열을 만들기 위해서는 malloc 함수로 메모리를 할당한 뒤 sprintf 함수로 문자열을 만들면 된다.

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

int main(void)
{
    char* s1 = malloc(sizeof(char) * 20);

    sprintf(s1, "Hello, %s", "world!");

    printf("%s\n", s1);

    free(s1);

    return 0;
}


마찬가지로 문자열 뿐만 아니라 서식 지정자를 사용하여 C언어의 다영한 값(자료형)도 문자열로 만들 수 있다.

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

int main(void)
{
    char* s1 = malloc(sizeof(char) * 30);

    sprintf(s1, "%c, %d, %f, %e", 'a', 10, 3.2f, 1.123456e-21f);

    printf("%s\n", s1);

    free(s1);

    return 0;
}