배열을 이용하여 문자열을 표현할 수 도 있다. 다음을 보자.
char str[ ] = "Hello world!";
위의 코드를 통해 배열 str에 char형 배열이 할당된 것을 확인할 수 있다. 그렇다면 위의 배열의 앞에서 배웠던 sizeof함수를 이용하여 길이를 알아보자.
1
2
3
4
5
6
7
8
9
10
|
#include <stdio.h>
int main(void) {
char str[] = "Hello world!"; // 글자는 공백을 포함하여 12개 이다.
int len = sizeof(str) / sizeof(char);
printf("배열의 길이 : %d\n", len);
return 0;
}
|
cs |
<실행결과>
공백을 포함하여 Hello world! 는 12글자인데 왜 13글자가 나올까? 이는 널 문자 때문이다. 다시 말하면 배열 str은 다음의 구조와 같다.
그렇다면 이 널 문자는 왜 포함되는 것 일까? 바로 문자열을 표현하기 위해서 이다.
char arr[ ] = {'H', 'i', '~'}; // 널 문자(\0)가 없으므로 단순한 문자 배열
char arr2[ ] = {'H', 'i', '~', '\0'}; // 널 문자(\0)가 존재하므로 문자열
즉 C언어에서는 문자열에서 널 문자를 인식하고 이를 문자열의 마지막으로 인식한다.
예제
프로그램 사용자로부터 하나의 영단어를 입력받아서 입력받은 영단어를 뒤집어서 출력하도록 예제를 작성하라 단 널 문자의 위치를 변경해서는 안된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
char str[100];
scanf("%s", str);
int len = 0;
while (str[len] != '\0')
len++;
char temp;
for (int i = 0; i < len / 2; i++) {
temp = str[i];
str[i] = str[len - 1 - i];
str[len - 1 - i] = temp;
}
printf("%s", str);
return 0;
}
|
cs |
<실행결과>
'C' 카테고리의 다른 글
5. 포인터와 함수 (0) | 2021.06.25 |
---|---|
4. 포인터와 배열 (0) | 2021.06.22 |
3. 포인터 (0) | 2021.06.21 |
1-1 배열 예제 (0) | 2021.06.21 |
1. 배열 - 배열과 초기화에 관하여 (0) | 2021.06.21 |