Programming/C Lang Lecture

[C언어 강좌]8강 : 문자열의 이해

yutaejeong 2014. 7. 25. 13:59


Written By StableVer.

[C언어 강좌]8강 : 문자열의 이해



목차

1. 문자열이란?

2. 문자열 사용해보기

3. 문자열 출력해보기

4. 널(NULL) 문자



1. 문자열이란?

우리는 문자형 변수, char를 배웠습니다. 하지만 프로그램에 사용하기엔 조금 부족합니다.

왜냐면 이름을 출력하는 프로그램을 만들때,

char name1;

char name2;

char name3;
.
.
.

char name10;

처럼 만들 수 는 없기 때문입니다.

이렇게 귀찮을때 정수형이나 실수형 변수는 배열을 사용했었죠?

문자도 마찬가지입니다. 문자열 또한 C언어에서는 char의 배열로 표현합니다.

문자열은 이렇게 문자형 변수를 배열로 만들어 간편하게 사용 가능한 것입니다.


2. 문자열 사용해보기

문자열도 일반 배열같이 사용할 수 있습니다.

1
2
3
4
5
6
7
#include<stdio.h>
 
int main(){
char name[5]={'H', 'e', 'l', 'l', 'o'};
printf("%c%c%c%c%c", name[0], name[1], name[2], name[3], name[4]);
return 0;
}

이 소스의 결과는

정상적으로 Hello가 출력되네요. 하지만, %c%c%c%c%c와 name[0]...을 써야 한단 점에서 아직은 불편합니다. 그리고 {'H', 'e', ... }로 문자를 일일이 처주기도 물편합니다. 여기서 문자열이 보통의 배열과 다른점을 보입니다.


3. 문자열 출력해보기

문자열이 특별한점은 이곳부터입니다.

문자열은 일반 배열과 다르게 {'A', ...}대신 "Hello!!!"처럼 큰따옴표로 에워싸는것으로 대신할 수 있습니다.

실제로 보도록 합시다.

1
2
3
4
5
6
7
#include<stdio.h>
 
int main(){
char name[5]="Play";
printf("%c%c%c%c", name[0], name[1], name[2], name[3]);
return 0;
}

이 소스의 결과는

정상적으로 Play가 출력되는군요. 하지만! %c%c%c를 치기도 매우 불편합니다.

이럴때에도 사용하는 방법이 있습니다!

문자열을 출력할때엔 %c%c%c%c...대신 %s로 간단하게 해결할 수 있습니다.

1
2
3
4
5
6
7
#include<stdio.h>
 
int main(){
char name[5]="Play";
printf("%s",name);
return 0;
}

*%s를 사용할때엔 변수이름[멤버] 대신 그냥  변수이름을 씁니다.

결과는 이렇습니다.


4. 널(NULL) 문자

그런데 자세히 보면 name의 크기는 5인데 Play란 문자는 4개 입니다.
그런데 제가 왜 배열의 크기를 5로 맞췄을까요?
그 이유는 문자열의 끝엔 널(NULL) 이라는 보이지 않는 문자가 들어가기 때문입니다.
한번 그 문자의 역할을 알아보기 위해 소스를 준비했습니다.
1
2
3
4
5
6
7
8
#include<stdio.h>
 
int main(){
char abc[]="callo";
char name[5]={'a', 'b', 'c', 'd', 'E'};
printf("name:%s    abc:%s", name, abc);
return 0;
}
*4행을 보시면 문자열도 정수형,실수형 배열처럼 멤버를 빼도 상관 없습니다.
이 소스의 결과는 그냥 name:abcdE    abc:callo 같지만....

*아니 이게 뭐지.....

..예상치 못한 결과가 나왔습니다?!
이제 이 소스에 널 문자를 의미하는 '\0'를 넣도록 하겠습니다.
1
2
3
4
5
6
7
8
#include<stdio.h>
 
int main(){
char abc[]="callo";
char name[6]={'a', 'b', 'c', 'd', 'E', '\0'};
printf("name:%s    abc:%s", name, abc);
return 0;
}

결과는 놀랍게도,

정상적으로 출력되었습니다.

그렇습니다. 널 문자는 문자열의 끝이 어디인지 알려주는 역할인 것입니다.


이렇게 널 문자는 문자열의 끝이 어디인지 표시하는 역할을 맡고 있습니다.

이번 강좌는 여기서 마치겠습니다.


다음강좌

9강 : 서식문자와 이스케이프 시퀀스


[C언어 강좌]8강 : 문자열의 이해