http://www.yes24.com/Product/Goods/74269921
혼자 공부하는 C 언어 - YES24
혼자 해도 충분하다! 1:1 과외하듯 배우는 C 프로그래밍 자습서이 책은 독학으로 C 언어를 배우는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’ ‘어떻게’ 학
www.yes24.com
strcpy 함수는 초기화된 문자열 지우고 새로운 문자열로 바꿀 때 사용합니다. 반면에 배열에 있는 문자열 뒤에 이어 붙일 때는 strcat 또는 strncat 함수를 사용합니다. 일종의 더하기 연산자 같은 역할이죠. 그렇다면 이 둘의 차이는 뭘까요? strcat 함수는 문자열을 이어 붙이며, strncat 함수는 지정한 문자의 개수만큼 붙입니다.
// strcat, strncat 함수를 사용한 문자열 붙이기
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[80] = "straw"; // 문자열 초기화
strcat(str, "berry"); // str 배열에 문자열 붙이기
printf("%s\n", str);
strncat(str, "piece", 3); // str 배열에 3개의 문자 붙이기
printf("%s\n", str);
return 0;
}
strcat 함수는 str 배열에 있는 문자열 뒤에 두 번째 인수로 주어지는 문자열을 이어 붙입니다. 구현 방식은 먼저 붙여넣을 배열에서 널 문자의 위치를 찾고 그 위치부터 붙여넣을 문자열을 복사합니다. 붙여넣기가 끝난 후에는 널 문자를 저장하여 마무리합니다.
strcat 함수를 사용할 때는 주의할 것이 있습니다.
주의1 strcat 함수는 메모리를 침범할 수 있습니다.
strcat 함수는 문자열을 덧붙이는 것이므로 붙여넣기가 되는 배열의 크기가 충분히 커야 합니다.
strcat 함수는 붙여넣을 공간의 주소를 증가시키므로 공간이 부족한 경우 할당하지 않은 다른 메모리 영역을 침범할 수 있습니다. 이 문제는 컴파일할 때 발견하지 못하고 프로그램이 완성된 후 실행할 때 발생하므로 더욱 주의해야 합니다.
주의2 strcat 함수를 사용할 때는 배열을 초기화해야 합니다.
strcat 함수로 붙여넣기 전에 먼저 널 문자의 위치를 찾으므로 반드시 초기화를 해야 합니다. 배열이 초기화되지 않으면 쓰레기 값의 중간부터 붙여넣을 가능성이 큽니다. 특별한 문자열로 초기화하거나 최소한 첫 번째 문자가 널 문자가 되도록 초기화합니다.
'프로그래밍언어 > C 언어' 카테고리의 다른 글
[혼자 공부하는 C언어] 문자열을 비교하는 strcmp, strncmp 함수 (0) | 2022.12.10 |
---|---|
[혼자 공부하는 C언어] 문자열 길이를 계산하는 strlen 함수 (0) | 2022.12.10 |
[C 언어] 원하는 개수의 문자만을 복사하는 strncpy 함수 (0) | 2022.12.10 |
[C언어] 문자열을 대입하는 strcpy 함수 (0) | 2022.12.10 |
[C 언어] 문자열을 출력하는 puts와 fputs 함수 (0) | 2022.12.10 |