프로그래밍/C 언어

문자와 문자열 ( 1. 문자열이란? )

Jay_rock 2020. 3. 9. 17:01

1. 문자열이란

문자열(String)은 연속된 문자들을 모은 것이다. 일반적으로 텍스트 데이터를 처리하게 되는데 이때 텍스트 데이터들은 문자열 형태로 저장된다. 문자열은 큰 따옴표로 표시하고 문자는 작은따옴표로 표시한다. 특수 문자건 공백이든 한 개 이상의 문자가 큰 따옴표 안에 있으면 전부 문자열이 된다. 

 

 

 

2. 저장 방법

C언어에서는 문자열을 위한 자료형을 따로 지원하지 않는다. 문자열을 저장하는 방법에는 2가지가 있다. 첫번째는 배열을 이용하는 방법이고, 두 번째는 포인터 변수에 저장하는 방식이다. 

 

1) 배열을 이용한 방법

배열을 이용하여 문자열을 나타낼 때는 문자열의 끝을 나타내는 널 문자(\0)도 지정되야 하기 때문에 배열의 크기를 문자열의 길이보다 최소 1 이상 크게 설정한다.

 

char str1[15] = "Hello World~!";   // 배열 크기를 15로 지정
char str2[] = "Hello World~!"; // 배열 크기 미지정, 초기화에 의해 크기 결정
char str3[] = {'H','e','l','l','o',' ','W','o','r','l','d','~','!','\0'} ; // 문자열 마지막에 널(null) 문자 '\0'를 넣어 끝을 나타냄

 

문자열은  항상 맨 마지막에 널문자를 포함하고 있기 때문에 항상 배열의 크기가 문자열의 길이보다 최소 1 이상 커야 한다. 만약에 문자열의 길이가 배열의 크기보다 같거나 크면 런타임 에러가 발생한다.

 

 

문자열의 입력과 출력을 위해 scanf()와 printf() 함수를 사용하는데, 이때 문자열을 하나의 단위로 취급하고 형식지정자 %s를 사용한다. 인자로는 배열의 시작 주소를 전달한다. 여기서 주의할 점은 scanf()와 printf() 함수를 사용할 때 형식지정자 %s를 사용할 때는 주소지정자(&)를 사용하지 않아도 무방하다.

 

char str[8];
scanf("%s",str);    //문자열 입력
printf("%s",str);   //문자열 출력

 

 

배열을 이용하여 문자열을 출력할때 2가지 방법이 있다. 첫 번째는 %s를 사용하여 출력하는 방법과 두 번째는 %c를 반복문을 이용하여 한 글자씩 출력하는 방법이다. 

 

char str[] = "Hello World!";

printf("%s\n", str );        // 첫번째 방법

for(int i=0; str[i] != '\0'; i++){
	printf("%c", str[i]);    // 두번째 방법
}
   

실행 결과

Hello World!

Hello World!

 

 

2) 포인터 변수를 이용한 방법

문자열을 가르키는 포인터 변수의 경우에는 메모리에 저장된 문자열 상수를 가리키고 있는 형태이다. 

 

char *str = "Hello World!"; // 포인터 변수 선언 및 초기화

 

 

포인터 변수를 이용하여 변수를 출력도 2가지 방법이 있다. 첫 번째는 for 문에서 배열 str의 시작을 가리키는 포인터 str_p를 이용하여 문자 배열의 각 문자를 출력하는 방법이다. 두 번째는 printf() 함수를 사용하여 문자열을 한 번에 출력하고 있다. 

 

char str[] = "Hello World!";
char *str_p;

str_p = str;
for( int i=0 ; i < strlen(str) ; i++){
	pritnf("%c", *(str_p+i));              // 첫 번째 방법
}
printf("\n");

printf("%s", str_p);                       // 두 번째 방법

실행 결과

Hello World!

Hello World!