72. 문자열 복사

학생1) 배열명은 포인터 상수로 취급해서 대입 연산자 좌항으로 올 수 없어. 학생2) 배열로 문자열을 사용할 때 대입 연산으로 사용할 수 없고 strcpy나 strcpy_s 함수로 문자열 복사할 수 있지.

C언어에서 문자열을 char 형식을 원소로 하는 배열이나 포인터를 사용하죠.
특히 문자열을 변경하는 작업을 하려면 배열을 사용한다고 했어요.
그런데 C언어에서 배열 이름은 포인터 상수로 취급하여 대입 연산 좌항에 올 수 없어요.

배열명은 대입 연산자 왼쪽에 올 수 없어요.

 

C 언어에서 문자열 데이터를 복사할 때는 다음 함수를 사용할 수 있어요.

입력 인자는 문자열을 복사할 주소와 원본 문자열을 받아요.
문자열을 복사하기 위해서 첫 번째 인자는 const 키워드가 없어요.
반환 형식은 char *로 첫 번째 인자 그대로 반환한답니다.
printf(“%s\n”, strcpy(name,”hello”));처럼 연쇄 작업을 할 수 있게 반환는 것으로 다른 특별한 의미는 없어요.

그리고 strcpy 함수와 strncpy 함수는 src가 가리키는 문자열의 길이나 복사할 길이 n이 dest 버퍼 크기보다 크면 버퍼 오버플로우 버그가 발생할 수 있어요.
strcpy_s와 strncpy_s는 dest 버퍼의 크기를 두 번째 입력 인자로 받아요.
dest 버퍼 크기를 받아 내부에서 버퍼 오버플로우 버그가 발생하지 않게 개선한 함수예요.

◈ 문자열 복사

◈ 실행 결과

 

strncpy 함수를 사용하면 복사한 문자 뒤에 널문자를 대입해 주지 않아요.
이러한 이유로 초기화하지 않고 사용하면 쓰레기 값이 남아있을 수 있으므로 주의하세요.

이 외에도 문자열을 사용하기 위한 다양한 함수들을 제공하고 있어요.

C언어 표준 라이브러리 함수를 참고하세요.

[C 언어 표준 라이브러리 함수 가이드]는 C언어 표준 라이브러리 함수에 관한 사용법을 다루고 있습니다.


[C언어 무료 동영상 강의] 72. 문자열 복사