string은 문자열이라는 뜻을 가지고 있다.
C언어에서는 배열의 종류중 하나로 문자형 데이터로 이루어진 배열을 의미한다.
문자열을 나타낼 수 있는 방법은 여러가지가 있다.
char str[5];
str[0] = 'A';
str[1] = 'P';
str[2] = 'P';
str[3] = 'L';
str[4] = 'E';
for(int i = 0; i < 5; i++) printf("%c",str[i]);
printf("\n");
1. 먼저 배열의 요소에 데이터를 하나씩 넣어서 for문으로 출력하는 방법이 있다.
char str2[5] = { 'A', 'P', 'P', 'L', 'E'};
for(int i = 0; i < 5; i++) printf("%c", str2[i]);
printf("\n");
2. 이번 방법은 변수 선언과 동시에 배열의 인덱스만큼 데이터를 초기화 해주고 for문으로 출력하는 방법이다.
char str3[5] = "APPLE";
for(int i = 0; i <5; i++) printf("%c", str3[i]);
printf("\n");
3. 이번엔 문자열 상수 표기법인 " "를 사용하여 str3를 선언과 동시에 초기화 해주고 for문으로 출력하는 방법이다.
printf("str3 : %s \n", str3);
그 후 %s(string)라는 서식문자를 사용하여 str3을 출력하게 된다면 어떻게 될까?
APPLE뒤에 오는 이상한 문자가 나오는 것을 볼 수 있다.
왜 이런 문자가 나오게 되는걸까?
C에서 문자열(string)은 null 문자(\0)로 끝나는 일련의 문자이다.
그런데 처음에 변수를 선언할 때 내가 5개의 문자가 들어갈 배열이라고 선언해줬기 때문에
5개의 문자 외에는 추가되는 NULL문자가 없었다.
그리고 printf("%c", str3[i]); 에서 %c 서식문자는 문자를 출력하기 위한 것이므로
str3 배열에 있는 NULL문자가 없는 문자열의 끝까지 출력을 진행하게 된다.
그러므로 "APPLE" 이후 메모리에 저장된 데이터가 출력되게 되어
이상한 "APPLE儆儆儆儆儆儆儆儆儆儆儆儆儆?"가 나오게 된 것이다.
char str4[6] = "APPLE";
printf("str4 : %s \n", str4);
char str5[] = "APPLE";
printf("str5 : %s \n", str5)
이렇게 배열의 길이를 6으로 하거나, 배열 형태의 str5를 선언하면 컴파일러가 자동적으로 초기화를 해준다.
컴파일러는 자동으로 끝에 null 문자를 추가하여 문자열의 끝을 표시한다.
'c' 카테고리의 다른 글
15_포인터(Pointer) (0) | 2023.04.17 |
---|---|
14_함수(Function) (0) | 2023.04.14 |
12_배열(Array) (0) | 2023.04.08 |
11_구조체(structure) (0) | 2023.04.05 |
10_반복문2(for) (0) | 2023.04.02 |
댓글