[C] strcpy, strncpy

C, C++ 2021. 8. 27. 17:24
728x90
728x90

strcpy : char*, char[] 타입의 문자열을 복사하는 함수
문자열은 다른 배열이나 포인터(메모리)로 복사할 수 있습니다. strcpy 함수는 문자열을 다른 곳으로 복사하며 함수 이름은 string copy에서 따왔습니다(string.h 헤더 파일에 선언되어 있습니다).

strncpy : 문자열을 일정 길이만큼 복사
null문자를 안붙일 수 있다. 

 

헤더파일

<string.h> // c
<cstring> // c++

 

문법

char *strcpy(char *_Dest, char const *_Source);
// strcpy(대상문자열, 원본문자열);
char *strcpy(char *_Dest, char const *_Source, size_t num);
//  size_t num 복사할 문자열의 길이

 

활용

#define _CRT_SECURE_NO_WARNINGS    // strcpy 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <string.h>    // strcpy 함수가 선언된 헤더 파일

int main()
{
    char s1[10] = "Hello";    // 크기가 10인 char형 배열을 선언하고 문자열 할당
    char s2[10];              // 크기가 10인 char형 배열을 선언

    strcpy(s2, s1);        // s1의 문자열을 s2로 복사
    
    printf("%s\n", s2);    // Hello

    return 0;
}

 

c언어 문자열에서 사용해야 한다. string 클래스 형태의 문자열에서는 사용못함
strcpy는 문자열을 복사할 때 끝에 널문자(\0)도 포함시켜 복사한다.
strncpy는 널문자를 마지막에 포함하는 걸 보장하지 않는다.
strncpy는 문자열을 복사한 뒤에도 문자열 공간에 자리가 남으면 널문자로 나머지 공간을 채운다. 

 

 

 

 

예시

#define _CRT_SECURE_NO_WARNINGS    // strcpy 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <string.h>    // strcpy 함수가 선언된 헤더 파일

int main()
{
    char dest1[13] = "";
    char dest2[13] = "";    
    char source[10] = "computer";
    
    printf("복사값 : %s\n", strcpy(dest1, source));
    printf("복사값 : %s\n", strncpy(dest2, source, 3)); 
    
    return 0;
}
#include <stdio.h>
#include <string.h>    // strcpy 함수가 선언된 헤더 파일

int main()
{
    char dest1[13] = "helloworld";
    char source[10] = "hey";
    
    printf("문자열길이 : %d\n", strlen(dest1)); //10진수
    printf("복사 : %s\n", strcpy(dest1, source)); //문자열
    printf("dest1[7] : %c\n", dest1[7]); //문자1개
    
    
    return 0;
}

 

#include <stdio.h>
#include <string.h>    // strcpy 함수가 선언된 헤더 파일

int main()
{
    char dest1[5] = "hey";
    char source[10] = "hello";
    
    printf("문자열길이 : %d\n", strlen(dest1));
    printf("문자열길이 : %d\n", strlen(source));
    
    printf("복사 : %s\n", strcpy(dest1, source));
    
    
    
    return 0;
}

 

 

 

c언어 출력타입

예제 출처

728x90
728x90

'C, C++' 카테고리의 다른 글

메인 함수(엔트리포인트)  (0) 2021.09.08
strcmp, strncmp - 두 문자열 일치 비교, 길이 특정  (0) 2021.09.08
[c] 파일포인터와 fopen, fclose, fprintf, fgets  (0) 2021.08.30
c++ define 함수  (0) 2021.05.26
[공유] C++  (0) 2021.05.12
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,

v