문자열을 복사하는 함수.
#include <cstring> // C++ #include <string.h> // C char* strcpy(char* dest, const char* origin); char* strncpy(char* dest, const char* origin, size_t n); // (char* dest) : 복사를 당할 문자열. // (const char* origin) : 복사할 문자열. // (size_t n) : 복사할 문자열 길이. // strcpy로 복사할 경우 문자열의 끝을 나타내는 '\0'까지 복사됨. // strncpy로 복사할 경우 길이 만큼만 복사하기 때문에 문자열의 끝을 나타내는 '\0'를 적절한 위치에 넣어야함. ---------- int main(void) { // strncpy char origin[] = "abcdefg1234"; // "abcdefg1234\0" 이므로 size = 12; char dest1[20]; char dest2[10]; char dest3[] = "strcpy_example"; // size = 15; //case1 : 빈 배열에 전체를 복사할때 strcpy(dest1, origin); //case2 : 꽉 차있는 배열에 전체를 복사할때 //strcpy(dest2, origin); // run time error //case3 : 꽉 차있는 배열에 전체를 복사할때 strcpy(dest3, origin); printf("case1 : %s\n", dest1); // ok //printf("case2 : %s\n", dest2); // run time error printf("case3 : %s\n", dest3); // ok // strncpy char origin[] = "abcdefg1234"; // "abcdefg1234\0" 이므로 size = 12; char dest1[20]; char dest2[] = "abcdefghijklmnop"; // size = 17; char dest3[] = "strncpy_example"; // size = 16; char dest4[10]; // case1 : 빈 배열에 전체를 복사할때 strncpy(dest1, origin, sizeof(origin)); // case2 : 꽉 차있는 배열에 전체를 복사할때 strncpy(dest2, origin, sizeof(origin)); // case3 : 꽉 차있는 배열에 일부만 복사할때 strncpy(dest3, origin, 4); // case4 : 빈 배열에 일부만 복사할때 strncpy(dest4, origin, 4); // case5 : 빈 배열에 일부만 복사하고 '\0' 넣을때 strncpy(dest4, origin, 4); dest4[4] = '\0'; printf("case1 : %s\n", dest1); // "abcdefg1234" printf("case2 : %s\n", dest2); // "abcdefg1234" printf("case3 : %s\n", dest3); // "strnefg1234" printf("case4 : %s\n", dest4); // "strn%%%%%%%%%%%%%..." printf("case5 : %s\n", dest4); // "strn" return 0; } | cs |
'::public > C,C++ 문자열 관련' 카테고리의 다른 글
strtok(문자열 자르기) (0) | 2021.06.02 |
---|---|
strcat, strncat(문자열 연결) (0) | 2021.06.01 |
strchr(문자 검색) (0) | 2021.06.01 |
strcmp, strncmp(문자열 비교) (0) | 2021.06.01 |
sscanf => sscanf_s (0) | 2021.06.01 |