C구조체와 문자열

문자열 라이브러리 함수

`strlen`, `strcmp`, `strcpy`, `strncpy`처럼 `string.h`에서 자주 보는 문자열 함수를 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

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는 대상 버퍼 크기를 검사하지 않습니다. 복사 대상 공간이 충분하지 않으면 버퍼 오버플로우가 발생할 수 있습니다.