C/문자열

[C] 문자열 (strcpy함수, strncpy함수)

KR_Jimi 2024. 1. 16. 22:40

문자열 대입함수이다.


strcpy함수는 문자열을 대입하는 함수이다.


  • <string.h>안에 내장되어 있다.
  • #define _CRT_SECURE_NO_WARINGS 를 사용해야한다.
  • 함수 형태
  • strcpy(str1, str2) // 첫번재 인수에는 문자열 받을 곳, 두번째 인수에는 대입할 문자열

예시

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

int main(void) {


    char str1[80] = "strawberry";
    char str2[80] = "apple";
    char* ps1 = "banana";
    char* ps2 = str2;

    printf("최초 문자열: %s\n", str1);
    strcpy(str1, str2);
    printf("바뀐 문자열: %s\n", str1);


    strcpy(str1, ps1);
    printf("바뀐 문자열: %s\n", str1);

    strcpy(str1, ps2);
    printf("바뀐 문자열: %s\n", str1);

    strcpy(str1, "banana");
    printf("바뀐 문자열: %s\n", str1);

    return 0;
}

실행결과
최초 문자열: strawberry
바뀐 문자열: apple
바뀐 문자열: banana
바뀐 문자열: apple
바뀐 문자열: banana

strcpy()를 사용하기 위해서 문자열 배열 두 개를 선언 및 초기화한다. 문자열 포인터변수도 2개 선언 및 초기화한다. strcpy()햠수를 이해하기 쉽도록 초기의 문자열을 출력하고 strcpy(str1, str2)를 사용하고 다시 출력해서 결괏값을 확인한다. 포인터 변수 ps1이 가리키는 것은 문자열 상수이다. 문자열 상수는 첫번째 문자의 주소로 바뀔 수 있으므로 포인터 변수에 대입할 수 있다. 문자열 상수는 문자열이므로 strcpy()의 두번재 인수로 사용할 수 있다.


strncpy함수는 문자의 개수를 지정한 만큼 대입하는 함수이다.


  • <string.h>안에 내장되어 있다.
  • #define _CRT_SECURE_NO_WARNINGS 를 사용해야한다.
  • 함수 형태
  • strncpy(str1, str2, 개수) //첫번째 인수에는 문자열 받을 곳, 두번재 인수에는 대입할 문자열, 세번재 인수에는 지정할 문자 갯수

예시

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

int main(void) {

    char str[20] = "mango tree";

    strncpy(str, "apple-pie", 5);

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



    return 0;
}

문자열 배열을 선언 및 초기화 한다. strncpy()함수에서 첫번째 인수에는 문자열을 받을 곳을 쓰고, 두번재 인수에는 넣을 문자열을, 세번재 인수에는 지정할 문자의 갯수를 쓴다. 항상 배열 안 문자열의 끝에는 '\0'문자가 붙는다.


실행결과
apple tree