smile blog 2022. 12. 12. 17:21

char형 배열의 선언과 초기화

char형 배열을 선언할 때 저장할 문자열의 길이보다 최소한 하나 이상 크게 배열을 선언

 

여분의 공간이 필요한 이유

==>널 문자 (\0)를 저장하기 위해서

 

1) 문자 상수로 하나씩 초기화

char str[80] = {'a', 'p', 'p', 'l', 'e', 'j', 'a', 'm'};

==> 이렇게 해도 가능하지만 쉽지 않다

 

2) 문자열 상수로 한 번에 초기화

char str[80]= "applejam";

==> 문자열 초기화는 대부분 이렇게 한다

 

 

널 문자의 용도

  • 널 문자란 char형 배열에 저장된 0을 의미
  • 문자열의 끝을 표시

 

*char형 배열 선언 시 초기화하지 않은 경우

char str[80]; // 배열 선언, 초기화 아직 안됨
str[0] = 'a'; // 배열 요소에 직접 문자 대입
str[1] = 'p';
str[2] = 'p';
str[3] = 'l';
str[4] = 'e';
str[5] = '\0'; // 마지막 문자 다음에 반드시 널 문자 대입!

 

*char형 배열 선언 시 주의할 점

1. 배열의 크기는 최대한 넉넉하게 선언해야 한다

char str[80] = "apple";

==> 널 문자까지 6칸밖에 차지하지 않지만 배열의 크기를 80으로 지정해 혹시 모를 상황에 대비할 수 있다

 

2. 배열 요소의 개수는 최소한 '문자열 길이 + 1' 이어야 한다

==> 널 문자로 끝을 표시하므로 + 1 해주어야 한다


문자열 대입

strcpy 함수는 char형 배열에 새로운 문자열을 저장하는 함수

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

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

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

	return 0;
}

strcpy 함수 기본 사용법

strcpy(저장된 배열명, 저장할 문자열);

 

strcpy 함수로 문자열 상수를 char형 배열에 대입

strcpy(str1, "tiger");

==> str1 이라는 char형 배열에 문자열 상수를 대입

 

 

char형 배열에 저장된 문자열을 다른 char형 배열에 대입하기

strcpy(str1, str2);

==> str1이라는 char형 배열에 str2이라는 char형 배열 대입

 

*주의할 것

char str[80];
str = "apple"; //이런식으로 배열에 문자열을 대입하면 오류

==> 꼭 strcpy함수를 사용해서 대입할 것


문자열 전용 입출력 함수 : gets, puts

빈칸을 포함하여 문자열을 입력하는 gets 함수

gets(char형 배열명);

 

gets와 짝을 이뤄 문자열을 출력하는 puts 함수

puts(char형 배열명);

 

 

*문자열의 끝에 널 문자가 없다면 쓰레기값이 출력된다