[C언어] 배열 : 문자 저장하는 배열

조아리 ㅣ 2024. 8. 21. 11:11

반응형

char형 배열의 선언과 초기화

char형의 배열을 선언할 때 가장 중요한 점은 배열의 크기가 저장할 문자열의 길이보다 최소한 하나 이상은 길어야 한다는 점입니다. 문자가 끝났음을 알리는 널 문자(\0)를 저장하기 위해서이기 때문입니다. 

 

char형 배열의 초기화 방법은 다음과 같습니다.

 

char str[100] = "copen";

 

일반 배열처럼 초기화 해도 되지만 쉽지 않으므로 위처럼 문자열 상수로 초기화하는 방법을 많이 사용합니다. 널문자는 선언해주지 않아도 됩니다. 

 

반응형

문자열 대입

char형 배열이 문자열을 저장하는 변수의 역할을 하므로 초기화된 이후에도 얼마든지 새로운 문자열을 저장할 수 있습니다. 단, 문자열의 길이가 다를 수 있으므로 일반 변수처럼 대입 연산자를 사용하는 것은 불가능합니다. 

 

이때 사용하는 함수가 strcpy입니다.

 

#include <strio.h>
#include <string.h>	// 문자열 관련 함수 원형을 모아 놓은 헤더 파일

int main(void){
    char str1[80] = "car";
    char str2[80];

    strcpy(str1, "rac");
    strcpy(str2, str1);
    printf("%s, %s\n", str1, str2);

    return 0;
}

 

strcpy(str1, "tiger") 는 str1 배열에 "rac"를 복사하여 붙여 넣겠다는 의미입니다. 그러므로 이때 str1은 "rac"로 바뀌게 됩니다. 그다음 strcpy(str2, str1)에서 str2에 str1의 값이 복사되어 str2도 "rac"로 초기화됩니다.

 

대입 연산자를 사용하지 않는 이유는 다음과 같습니다. 

 

char str[80];

str = "cop"; (str은 str배열의 시작주소이기 때문에)
100 = "cop"; 이 되어 대입이 불가능
반응형