첫 번째 줄에는 배열에 저장한 값 coding이 잘 나오는데, 두 번째 줄에는 7이라고 나옵니다. coding은 6글자인데 왜 7이라고 나올까요? 배열에 문자열의 끝을 나타내는 널 문자(\0)가 적용돼서 그렇습니다. 배열 크기를 지정하지 않으면 값의 개수에 맞춰 공간이 생성됩니다. 이때 문자의 끝을 나타내는 널 문자가 들어갈 공간도 자동으로 생성됩니다.
배열에 널 문자가 저장됐는지 확인하기 위해 배열의 값을 출력해 보겠습니다. 문자열은 배열의 각 요소에 한 글자씩 저장되어 있습니다. 그러므로 인덱스로 배열의 요소에 접근하면 한 글자씩 출력할 수 있습니다. for 문에서 i를 첫 번째 인덱스 0부터 str 배열의 크기까지 반복합니다. 이때 인덱스가 0부터 시작하니 조건은 배열 크기보다 작을 때까지로 해야 함을 잊지 말고요. str 배열의 크기는 sizeof로 알아내면 됩니다. 반복할 때마다 인덱스가 하나씩 증가하면서 printf()문으로 str[i] 값을 출력합니다. 단, 값이 한 글자이므로 %s가 아닌 %c로 받습니다.
6.4.1 배열에문자열저장하기.c
int main(void) {
char str[] = "coding";
for (int i = 0; i < sizeof(str); i++) {
printf("%c\n", str[i]);
}
return 0;
}
실행결과 |
c o d i n g |
실행해 보면 마지막 줄이 비어 있습니다. 화면에는 보이지 않지만, 문자열 끝을 표시하는 널 문자가 출력돼서 그렇습니다. 이처럼 문자열 끝에는 항상 널 문자가 있다고 생각하세요.