POST

c언어 문자열 배열과 널(null문자)


문자열 배열과 널(null문자)


일단 아래 코드와 결과를 살펴보자.

#include<stdio.h>


int main(void)

{

char str[] = "Hello World !"; // 실제길이 13(0~13)

printf("배열의 str 크기 : %d \n", sizeof(str)); // 배열의 길이가 14가 된다.(1~14)

printf("널 문자 문자형 출력 : %c \n", str[13]); // 공백으로 보일수잇다.

printf("널 문자 정수형 출력 : %d \n", str[13]);

printf("공백의 정수형 출력 : %d \n", str[5]); // 아스키코드 값은 서로 다르다

str[12] = '?'; // 배열에 담겨 잇으므로 문자열 일부를 변경 가능

printf("문자열 출력 : %s \n", str);

return 0;

}

배열의 길이가 14가 되는 이유는 문자열의 저장을 목적으로 char형 배열을 선언할 때 배열의 크기를 지정하지 않으면 자동으로 마지막 배열에 특수문자 '\0'가 삽입된다.

따라서 직접 배열의 크기를 지정 할 때 에는 '\0'의 공간까지 고려하여 배열의 길이를 결정해야한다.


'\0'을 '널(null)' 문자라 한다.


널문자는 문자열의 끝을 판단한다.

이는 str[0]이 시작위치고 문자열의 끝str[13]에는 널문자가 있다. 라고 할수잇다.


#include<stdio.h>


int main(void)

{

char str[] = "Hello World !";

printf("문자열 출력 : %s \n", str);

str[9] = '\0';

printf("10번째 요소에 널문자 저장: %s\n", str);

str[4] = 0;

printf("5번째 요소에 널문자 저장: %s\n", str);

return 0;

}


위코드에서 하나는 '\0' 이고 하나는 0을 했는데 같은 널문자로 판단하는 이유는 
널문자의 아스키 코드값이 0 이기 때문이다.


아스키 코드표 보러가기



1차원 배열 보러가기