C 스타일 문자열 개요
C 스타일 문자열은 널 종료 문자 '\0'
로 끝나는 문자 배열입니다.
C++에서도 이를 지원하며, 특히 레거시 코드나 C API와의 상호 운용성을 위해 중요합니다.
C 스타일 문자열은 C 언어의 유산으로, 문자열 처리의 기본을 이해하는 데 중요한 역할을 합니다.
문자열 선언과 초기화
문자 배열로 선언
문자 포인터로 선언
주의 : 문자 포인터로 선언된 문자열 리터럴은 수정할 수 없습니다.
문자열 조작 함수 (cstring 헤더)
strlen()
: 문자열 길이
strcpy()
: 문자열 복사
주의 : strcpy()
는 버퍼 오버플로우의 위험이 있습니다. strncpy()
를 사용하는 것이 더 안전합니다.
strcat()
: 문자열 연결
strcmp()
: 문자열 비교
안전하지 않은 함수와 안전한 대안
안전하지 않은 함수의 문제점
strcpy()
, strcat()
등의 함수는 버퍼 오버플로우의 위험이 있습니다. 이는 심각한 보안 취약점을 초래할 수 있습니다.
안전한 대안
문자열과 숫자 변환
atoi()
: 문자열을 정수로
sprintf()
: 숫자를 문자열로
C 스타일 문자열의 한계
1. 길이 제한 : 배열의 크기를 미리 정해야 합니다.
2. 버퍼 오버플로우 위험 : 문자열 조작 시 주의가 필요합니다.
3. 문자열 조작의 어려움 : 연결, 삽입, 삭제 등의 작업이 복잡합니다.
C++ std::string과의 비교
std::string은 동적 크기 조정, 안전한 조작, 편리한 멤버 함수 등 많은 장점을 제공합니다.
C 스타일 문자열과 std::string 간 변환
연습 문제
- 사용자로부터 두 문자열을 입력받아 연결하고 출력하는 프로그램을 작성하세요. (힌트 :
gets()
대신 안전한 fgets()
를 사용하세요)
- 주어진 문자열에서 특정 문자의 개수를 세는 함수를 구현하세요.
- C 스타일 문자열을 역순으로 만드는 함수를 작성하세요.
참고자료