본문 바로가기
프로그래밍/C언어

6.2 문자열 함수 활용하기

by 밤이씌 2025. 3. 26.

6.2 문자열 함수 활용하기

문자열 다루는 함수만 잘 써도, 복잡한 코드가 10배는 쉬워집니다. 지금 바로 실전 꿀팁 익혀보세요!

안녕하세요, 코딩하면서 문자열 처리에 애먹어보신 적 있으신가요? 저는 문자열 조작만 하면 실수 연발이었어요. 특히 문자열 길이 계산, 복사, 이어붙이기 같은 기본적인 작업도 처음엔 어려웠죠. 그런데 표준 라이브러리에 포함된 문자열 함수들을 제대로 알고 쓰기 시작하면서, 코드 작성이 훨씬 간단하고 안정적으로 바뀌었답니다. 오늘은 C 언어 기준으로 자주 쓰이는 문자열 함수들을 예제와 함께 소개해드릴게요. 이 함수들만 익혀도 웬만한 문자열 처리는 다 할 수 있어요!

1. 문자열 길이 구하기: strlen()

문자열의 길이를 알고 싶을 때 가장 먼저 떠오르는 함수가 strlen()이에요. 이 함수는 '\0' 널 문자가 나오기 전까지의 문자 수를 반환합니다. 배열의 크기와 문자열 길이는 다를 수 있으니 헷갈리지 않게 주의하세요!

2. 문자열 복사: strcpy()와 strncpy()

문자열 복사할 땐 strcpy()strncpy()를 사용해요. 다만 strcpy()는 복사 대상 배열 크기를 초과할 수 있어 위험해요. 그래서 strncpy()처럼 복사 길이를 지정하는 함수가 더 안전합니다.

함수 설명
strcpy(dest, src) src의 문자열을 dest로 복사 (널 문자 포함)
strncpy(dest, src, n) 최대 n개까지 복사, 널 종료 보장 X (주의)

3. 문자열 연결: strcat()과 strncat()

문자열 두 개를 이어붙이고 싶을 때 사용하는 함수가 strcat()이에요. 하지만 버퍼 오버플로를 막기 위해 strncat()을 쓰는 것이 더 안전합니다.

  • strcat(dest, src): dest 뒤에 src 문자열 추가
  • strncat(dest, src, n): 최대 n개 문자만 추가
  • 주의: dest 배열 크기 충분한지 반드시 확인!

4. 문자열 비교: strcmp()의 비밀

strcmp()는 두 문자열을 사전순으로 비교하는 함수예요. 같으면 0, 앞 문자열이 작으면 음수, 크면 양수를 반환해요. 단순히 같냐 아니냐만 체크할 때는 strcmp(str1, str2) == 0 형태로 쓰면 됩니다.

5. 특정 문자 찾기: strchr()

문자열에서 특정 문자를 찾고 싶을 땐 strchr() 함수를 사용해요. 해당 문자가 처음 등장하는 위치의 포인터를 반환해주기 때문에 위치 계산이나 문자열 자르기에 유용하죠.

예시 코드 설명
char *p = strchr("hello", 'e');
‘e’가 있는 위치를 가리키는 포인터 반환

6. 문자열 안에서 문자열 찾기: strstr()

strstr() 함수는 문자열 안에서 부분 문자열을 찾는 데 사용돼요. 찾으면 해당 위치 포인터를 반환하고, 없으면 NULL을 반환합니다. 간단한 검색 기능 만들 때 유용하게 쓰입니다.

  • 예: strstr("hello world", "world") → "world"부터 시작하는 포인터 반환
  • 포인터 연산을 활용해 문장 일부를 추출할 수도 있어요
  • 문자열 검색 알고리즘 구현할 때 기초로 자주 활용됨
Q strlen() 함수의 반환값은 널 문자 포함인가요?

아니요, strlen()은 널 문자를 포함하지 않은 문자 개수만 반환합니다.

Q strcpy()와 strncpy()의 차이점은 뭔가요?

strcpy()는 널 문자 포함 전체 복사, strncpy()는 지정한 길이만큼 복사하며 널 문자가 없을 수 있어 주의가 필요합니다.

Q strcat()를 쓸 때 꼭 확인해야 하는 건?

dest 배열의 크기가 충분한지 반드시 확인하세요. 그렇지 않으면 버퍼 오버플로우가 발생할 수 있어요.

Q strcmp()는 대소문자를 구분하나요?

네, strcmp()는 대소문자를 구분합니다. 'Hello'와 'hello'는 다르다고 인식해요.

Q strchr()와 strstr()의 차이점은 무엇인가요?

strchr()는 단일 문자 검색, strstr()는 문자열 검색에 사용돼요. 반환값은 모두 포인터입니다.

Q 문자열 함수 사용할 때 가장 주의할 점은?

배열 크기 초과, 널 종료 누락, 포인터 오용 등 메모리 안전 문제가 가장 중요합니다.

문자열 함수, 하나하나 익힐 땐 복잡해 보여도 직접 써보면 정말 강력한 도구들이에요. 복잡한 문자열 처리를 간단하게 만들어주고, 코드 가독성도 훨씬 좋아지죠. 오늘 소개한 함수들을 예제로 연습해보면서 내 것으로 만들어보세요. 그리고 중요한 건 '안전하게' 사용하는 거예요. 배열 크기, 널 문자, 포인터 등을 항상 염두에 두고 코딩하신다면, 문자열 다루는 실력이 한 단계 업그레이드될 거예요! 궁금한 부분이나 공유하고 싶은 팁이 있다면 댓글로 자유롭게 이야기해 주세요 :)

문자열함수, C언어기초, strcpy, strlen, strcmp, strncat, 문자열비교, 문자열복사, 문자열검색, char배열

댓글