기본 패턴
c
char name[16] = "cat";
size_t len = strlen(name);
if (strcmp(name, "cat") == 0) {
strcpy(name, "dog");
}설명
- C 문자열은 널 종료된
char배열이므로, 문자열 함수도 결국 배열과 메모리를 다루는 함수입니다. strlen은 길이를 구하고,strcmp는 사전식 비교를 하며,strcpy는 문자열을 복사합니다.- 표준 라이브러리 함수는 직접 반복문을 쓰는 것보다 의도가 분명하고 재사용성이 높습니다.
- 대신 버퍼 크기를 직접 관리해야 하므로, 복사와 연결 함수는 항상 남은 공간을 함께 생각해야 합니다.
짧은 예제
c
#include <stdio.h>
#include <string.h>
int main(void) {
char first[16] = "hello";
char second[16];
strcpy(second, first);
printf("len=%zu, equal=%d\n", strlen(second), strcmp(first, second) == 0);
return 0;
}빠른 정리
| 항목 | 설명 |
|---|---|
strlen | 널 종료 전까지의 문자 수를 셈 |
strcmp | 두 문자열을 비교해 같고 다름을 판단 |
strcpy | 원본 문자열을 대상 버퍼로 복사 |
strncpy | 최대 길이를 제한해 복사하지만 널 종료를 따로 확인해야 함 |
| 버퍼 크기 | 모든 복사 함수는 대상 배열 크기를 함께 고려해야 함 |
주의할 점
strcpy는 대상 버퍼 크기를 검사하지 않습니다. 복사 대상 공간이 충분하지 않으면 버퍼 오버플로우가 발생할 수 있습니다.