언어 자료구조 알고리즘/디딤돌 C언어

[C언어] 70. 문자열 길이와 strlen 함수

언제나휴일 2016. 4. 17. 16:10
반응형


문자열 길이와 strlen 함수


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