..

Search

37) 문자열

37) 문자열

문자열


문자열(string)

C언어에서는 큰따옴표("")를 사용해 표현되는 문자열을 문자열 상수(string constant)라고 합니다.

상수라고 표현하는 이유는 해당 문자열이 이름을 가지고 있지 않으며, 문자열의 내용 또한 변경할 수 없기 때문입니다.

 

C언어에서 문자열(string)은 메모리에 저장된 일련의 연속된 문자(character)들의 집합을 의미합니다.

따라서 문자형 배열을 선언하면 이 배열이 곧 문자열 변수가 됩니다.

 

다음 예제는 문자열 상수 및 변수를 선언하는 여러 방법을 보여주는 예제입니다.

예제

char str01[] = "This is a string.";    // 크기를 지정하지 않은 문자열 변수 선언

char str02[7] = "string";              // 크기를 지정한 문자열 변수 선언

 

printf("이것은 문자열 상수입니다.\n"); // 문자열 상수

printf("문자열 str01에 저장되어 있는 문자열은 \"%s\"입니다.\n", str01);

printf("문자열 str02에 저장되어 있는 문자열은 \"%s\"입니다.\n", str02);  

코딩연습 ▶

실행 결과

이것은 문자열 상수입니다.

문자열 str01에 저장되어 있는 문자열은 "This is a string."입니다.

문자열 str02에 저장되어 있는 문자열은 "string"입니다.

 

printf() 함수에서 사용된 '%s'는 문자열을 표현하기 위한 입출력 서식 문자입니다.

널(NULL) 문자

문자형 배열로 선언된 문자열 변수는 문자열의 끝을 프로그램에 따로 알려주어야 합니다.

그래야만 프로그램이 실제 문자열에 속한 값과 그 외의 쓰레깃값을 구분할 수 있습니다.

 

따라서 C언어에서는 문자열에 속한 데이터가 끝나면, 문자열의 끝을 의미하는 문자를 하나 더 삽입해 줍니다.

이 문자를 널(NULL) 문자라고 하며, '\0'으로 표시하고 아스키코드값은 0입니다.

 

다음 예제는 널 문자를 이용하여 널 문자를 제외한 문자열의 길이를 계산하여 출력해주는 예제입니다.

예제

int str_len = 0;

char str[] = "string";

 

while (str[str_len] != '\0') // 널 문자가 나올 때까지 길이를 증가함

{

    str_len++;

}

printf("이 문자열의 길이는 %d입니다.\n", str_len);

코딩연습 ▶

실행 결과

이 문자열의 길이는 6입니다.

 

다음 그림은 위 예제에서 사용된 문자열이 메모리 상에 어떻게 저장되어 있는지를 보여줍니다.

 


연습문제