35.4 배열 형태의 문자열에서 인덱스로 문자에 접근하기
배열에 문자열을 저장한다면 당연히 인덱스로 접근할 수 있겠죠? 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요.
string_array_element.c
#include <stdio.h> int main() { char s1[10] = "Hello"; // 크기가 10인 char형 배열을 선언하고 문자열 할당 printf("%c\n", s1[1]); // e: 인덱스 1(두 번째)의 문자 출력 printf("%c\n", s1[4]); // o: 인덱스 4(다섯 번째)의 문자 출력 printf("%c\n", s1[5]); // 문자열 맨 뒤의 NULL(\0) 출력. NULL은 화면에 표시되지 않음 return 0; }
실행 결과
e o
s1[1]처럼 배열을 인덱스로 접근했고, printf에서 서식 지정자 %c로 문자를 출력하였습니다. 이렇게 배열을 인덱스로 접근하면 char와 같기 때문에 %c로 출력할 수 있습니다.
마찬가지로 배열에 저장된 문자열도 맨 뒤에는 NULL이 저장되어 있습니다.
배열 형태의 문자열은 인덱스로 접근하여 문자를 할당할 수 있습니다.
string_array_element_assign.c
#include <stdio.h> int main() { char s1[10] = "Hello"; // 크기가 10인 char형 배열을 선언하고 문자열 할당 // 배열에 문자열이 복사됨 s1[0] = 'A'; // 문자 배열의 인덱스 0에 문자 A를 할당 printf("%s\n", s1); // Aello: 바뀐 문자열이 출력됨 return 0; }
실행 결과
Aello
"Hello"가 들어있는 문자 배열 s1의 인덱스 0에 'A'를 할당하여 "Aello"가 되었습니다. 배열 형태의 문자열은 인덱스로 접근하여 내용을 변경할 수 있습니다. 왜냐하면 char s1[10] = "Hello";은 배열에 문자열이 모두 복사되기 때문입니다.
지금까지 문자열에 대해 배웠는데 문자열 포인터도 있고 문자 배열도 있어서 조금 복잡했을 겁니다. 일단 문자열은 포인터로도 사용할 수 있고, 배열로도 사용할 수 있다는 점만 기억하면 됩니다.