문자열 배열과 널(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;
}
'C' 카테고리의 다른 글
c언어 문자열의 길이 구하기 (2) | 2014.04.29 |
---|---|
c언어 배열의 숫자를 반대로 출력하기 (비트연산자 이용) (0) | 2014.04.29 |
c언어 rand 함수 이용하여 가장 많이 생성된수 찾기 (0) | 2014.04.29 |
c언어 2의n승의 결과 출력하기 (0) | 2014.04.29 |
c언어 입력한 돈으로 잔돈이 남지않게 물건 구입하기 (6) | 2014.04.28 |