::public/C,C++ 문자열 관련
strcat, strncat(문자열 연결)
해맑은욱
2021. 6. 1. 17:25
문자열을 이어붙이는, 문자열 연결함수.
#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 |