C 컴파일러에서는 문자열 데이터에 관한 여러가지 함수를 제공하고 있어요.
이러한 함수들을 사용하려면 string.h 파일을 포함하세요.
#include <string.h>
strlen 함수는 문자열 길이를 구하는 함수예요.
size_t strlen(const char *str);
입력 인자로 문자열을 const char * 형식 변수로 받고 문자열 길이를 size_t 형식으로 반환해요.
const char * 형식으로 받는 이유는 전달받은 문자열의 내용을 바꾸지 않겠다는 의미예요.
그리고 반환 형식인 size_t 형식은 부호없는 정수형으로 unsigned int 와 같은 표현이예요.
실제 헤더 파일에는 다음처럼 size_t를 typedef 문으로 정의하고 있어요.
typedef unsigned int size_t;
◈ strlen 함수 사용 예
#include <stdio.h> #include <string.h> #define MAX_NAME_LEN 50 int main() { char name[MAX_NAME_LEN+1] = "hello"; printf("%s 길이: %d\n",name, strlen(name)); return 0; }
◈ 실행 결과
hello 길이: 5
주의할 점은 한글은 ASCII 코드가 아니어서 한글 한 글자가 ASCII 코드 두 개의 글자로 취급해요.
C99 표준 이후에는 유니 코드를 취급할 수 있는 wchar_t 형식을 제공하고 있어요.
wchar_t 형식을 사용하면 개발자의 지역에서 사용하는 언어의 문자를 하나의 문자로 취급하죠.
wchar_t 형식을 표현할 때는 L’홍’처럼 대문자 L을 앞에 붙여서 사용하세요.
wchar_t 형식 문자열을 표현할 때는 L”홍길동”처럼 사용하죠.
그리고 locale.h 파일에서 제공하는 setlocale함수를 사용하면 printf 함수로 출력할 수 있어요.
setlocale(LC_ALL,”Korean”); 으로 지정하고 printf 함수에 %lc 와 %ls 포멧을 사용해서 출력하세요.
◈ 유니코드와 ASCII 코드
#include <locale.h> #include <stdio.h> #include <string.h> int main() { char c ='a'; wchar_t wc = L'홍'; char name[10]="홍길동"; wchar_t wname[10]=L"홍길동"; setlocale(LC_ALL,"Korean"); //로케일 설정(지역 설정) printf("c:%c wc:%lc\n",c,wc); printf("name:%s wname:%ls\n",name,wname); printf("name 길이:%d wname 길이:%d\n",strlen(name), wcslen(wname)); return 0; }
◈ 실행 결과
c:a wc:홍 name:홍길동 wname:홍길동 name 길이:6 wname 길이:3