Monday, August 20, 2007
C언어에서 문자열에 null 문자 입력 방법; 널문자 출력
C에서 "null 문자"란 것은 16진수 아스키 코드 ASCII Code 로 0x00, 십진수로는 0번 문자를 의미합니다. 그렇지만 아라비아 숫자 제로(0)는 아닙니다. null 문자는 눈에 보이지 않는 특수 문자입니다. C언어에서 null 은, "문자열의 끝"을 의미합니다. 그래서 문자열에서 널(null)문자 뒤에 있는 문자들은 문자열 출력에서 무시됩니다.
널문자는 '\0' 즉 '백슬래쉬+숫자 영'이라는 이스케이프 시퀀스로 표현합니다. 아래 예제에서 AAA 와 BBB 라는 단어 사이에 널문자가 하나 들어가 있습니다. 그래서 사실상 AAA 가 문자열의 끝입니다. 뒤의 BBB 는 무시됩니다. AAA만 출력됩니다.
어떤 문자열을 정의하면 그 문자열 맨 끝에 널문자가 1개 자동으로 붙습니다. 그래서 아래 예제에서는 실제로는 BBB 뒤에도 \0 이런 null 문자가 보이지 않게 붙어 있습니다.
null 문자 포함된 문자열 출력 예제
예제 소스 파일명: example.cpp
널문자는 '\0' 즉 '백슬래쉬+숫자 영'이라는 이스케이프 시퀀스로 표현합니다. 아래 예제에서 AAA 와 BBB 라는 단어 사이에 널문자가 하나 들어가 있습니다. 그래서 사실상 AAA 가 문자열의 끝입니다. 뒤의 BBB 는 무시됩니다. AAA만 출력됩니다.
어떤 문자열을 정의하면 그 문자열 맨 끝에 널문자가 1개 자동으로 붙습니다. 그래서 아래 예제에서는 실제로는 BBB 뒤에도 \0 이런 null 문자가 보이지 않게 붙어 있습니다.
null 문자 포함된 문자열 출력 예제
예제 소스 파일명: example.cpp
#include <stdio.h>
int main(void) {
char str[] = "AAA\0BBB";
printf("%s\n", str);
// 출력 결과: AAA
// 위의 문자열을 널문자까지 강제로 출력해 보겠습니다.
for (int i = 0; i < sizeof(str); i++) {
printf("%c = 0x%02X\n", str[i], str[i]);
}
/*
화면 출력 결과:
(0x00 이라는 글자들이 끼여 있습니다. 널문자들입니다.)
A = 0x41
A = 0x41
A = 0x41
= 0x00
B = 0x42
B = 0x42
B = 0x42
= 0x00
*/
return 0;
}
int main(void) {
char str[] = "AAA\0BBB";
printf("%s\n", str);
// 출력 결과: AAA
// 위의 문자열을 널문자까지 강제로 출력해 보겠습니다.
for (int i = 0; i < sizeof(str); i++) {
printf("%c = 0x%02X\n", str[i], str[i]);
}
/*
화면 출력 결과:
(0x00 이라는 글자들이 끼여 있습니다. 널문자들입니다.)
A = 0x41
A = 0x41
A = 0x41
= 0x00
B = 0x42
B = 0x42
B = 0x42
= 0x00
*/
return 0;
}
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home