문자열을 이어붙이는, 문자열 연결함수.
#include <cstring> // C++ #include <string.h> // C char* strcat(char* dest, const char* origin); char* strncat(char* dest, const char* origin, size_t n); // (char* dest) : 붙임을 당할 문자열. '\0' 위치에 '\0'을 없애고 붙임. // (const char* origin) : 붙여질 문자열. // (size_t n) : 붙일 문자열 길이. // dest 배열의 길이는 dest + origin + 1 보다 커야함. // 마지막 문자열 끝에만 '\0'이 붙음. // n 사이즈로 문자를 잘라도 문자열 끝에는 '\0'가 붙음. ---------- int main(void) { // strcat char origin[] = "abcdefg1234"; // "abcdefg1234\0" 이므로 size = 12; char dest1[100] = "ABCDEFG"; char dest2[10] = "ABCDEFG"; // "ABCDEFG\0" 이므로, size = 8; //case1 : 넉넉한 dest 배열 뒤에 붙여넣는경우 strcat(dest1, origin); //case2 : 넉넉하지 않은 dest 배열 뒤에 넘치게 붙여 넣는 경우. //strcat(dest2, origin); // run time error printf(" case1 : %s\n", dest1); // ok //printf("case2 : %s\n", dest2); // error. // strncat char origin[] = "abcdefg1234"; // "abcdefg1234\0" 이므로 size = 12; char dest1[100] = "ABCDEFG1"; char dest2[100] = "ABCDEFG2"; char dest3[10] = "ABCDEFG3"; // "ABCDEFG3\0" 이므로, size = 9; //case1 : origin 문자열 모두를 이어 붙이는 경우. strncat(dest1, origin, sizeof(origin)); //case2 : origin 문자열 5개만 붙여넣는 경우 strncat(dest2, origin, 5); //case3 : 넉넉하지 않은 dest 배열 뒤에 넘치게 붙여 넣는 경우. //strncat(dest3, origin, 5); //run time error printf("strncat case1 : %s\n", dest1); // ok printf("strncat case2 : %s\n", dest2); // ok //printf("strncat case3 : %s\n", dest3); // error return 0; } | cs |
'::public > C,C++ 문자열 관련' 카테고리의 다른 글
TCHAR (0) | 2021.07.01 |
---|---|
strtok(문자열 자르기) (0) | 2021.06.02 |
strcpy, strncpy(문자열 복사) (0) | 2021.06.01 |
strchr(문자 검색) (0) | 2021.06.01 |
strcmp, strncmp(문자열 비교) (0) | 2021.06.01 |