배열을 이용하여 문자열을 표현할 수 도 있다. 다음을 보자.

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은 다음의 구조와 같다.

널 문자 \0가 포함된 모습

그렇다면 이 널 문자는 왜 포함되는 것 일까? 바로 문자열을 표현하기 위해서 이다.

 

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

+ Recent posts