strcpy, strncpy, sprintf, snprintf 안전하게 사용하기
프로그래밍/c,c++ 2020. 12. 1. 10:24반응형
strcpy : src 의 길이가 dst 의 길이 보다 작아야 한다.
char *src = "AAA";
char dst[10] = { 0, };
if (strlen(src) < sizeof(dst) {
strcpy(dst, src);
}
strncpy : src 길이가 dst 보다 크거나 같으면 dst 마지막에 '\0' 이 없어지기 때문에 dst length - 1로 n 값을 설정해야 한다.
char *src = "AAA";
char dst[10] = { 0, };
strncpy(dst, src, sizeof(dst) - 1);
sprintf : format 문자열이 dst를 넘지 않아야 한다.
snprintf : 길이 n의 마지막에는 '\0' 값이 들어간다는 것을 염두에 두고 길이 값을 설정한다.
char *src = "aaaaa"
int src2 = 10000
char dst[10] = { 0, };
snprintf(dst, sizeof(dst), "%s%d", src, src2); // "aaaaa1000" 마지막 문자가 짤린다.
반응형