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;
}
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 |