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
'언어 자료구조 알고리즘 > 디딤돌 C언어' 카테고리의 다른 글
[C언어] 75. 공용체 (0) | 2016.04.17 |
---|---|
[C언어] 74. 구조체 (0) | 2016.04.17 |
[C언어] 73. 문자열 정리하기 (0) | 2016.04.17 |
[C언어] 72. 문자열 복사 (0) | 2016.04.17 |
[C언어] 71. 문자열 비교와 strcmp 함수 (0) | 2016.04.17 |
[C언어] 69. 문자열 사용 기초 (0) | 2016.04.17 |
[C언어] 68. 문자열 (0) | 2016.04.17 |
67. 정리하기 (0) | 2016.01.01 |
66. 구현 (0) | 2016.01.01 |
65. 테스트 코드 작성하기 (0) | 2016.01.01 |