본문 바로가기
C 언어 프로그래밍/배열

배열과 문자열

by 프밍샘 2020. 6. 7.

문자열은 문자의 집합을 의미하며, C언어에서는 문자열을 위한 자료형은 제공하지 않습니다. 따라서 C언어에서는 배열을 이용하여 문자열을 처리합니다.

 

 

문자열 배열의 초기화

 

char st[5]={'L', 'o', 'v', 'e', '\0'};

 

st[0]

st[1]

st[2]

st[3]

st[4]

'L'

'o'

'v'

'e'

'\0'

 

C언어에서는 문자열 끝NULL(0, '\0')문자를 자동으로 포함시킵니다. 따라서 배열로 문자열을 다룰 때에는 문자열 끝에 자동으로 붙는 '\0' 문자까지 포함하여 '문자길이+1' 로 크기를 설정해야 합니다. sizeof 연산자를 이용하면 문자열의 크기를 알아볼 수 있습니다.

더보기

코드

#include <stdio.h>
int main()
{
	printf("size is %d bytes", sizeof("Love"));
	return 0; 
}

출력결과

 

문자열을 초기화하는 방법은 다음과 같이 다양한 방법이 있습니다. 모두 같은 값이 초기화되었으며, 같은 값이 출력됩니다.

 

#include <stdio.h>
int main()
{
	int i;
	char string1[5]={'L', 'o', 'v', 'e', '\0'};
	char string2[]={'L', 'o', 'v', 'e', '\0'};
	char string3[5]={'L', 'o', 'v', 'e', 0};
	char string4[5]="Love";
	char string5[]="Love";
	//char string6[5];
	//string6="Love";       //가능한 방법이 아니다. 
	
	printf("%s\n", string1);
	printf("%s\n", string2);
	printf("%s\n", string3);
	printf("%s\n", string4);
	printf("%s\n", string5);
	
	return 0; 
}

출력결과



 

 

문자열의 출력

 

문자열을 출력하는 방법에는 문자열 배열의 각 값을 출력하거나, 변환문자 %s를 이용하여 배열의 시작부터 NULL('\0')문자를 만날 때까지의 값을 한꺼번에 출력하는 방법이 있습니다. 아래의 두 방법은 같은 결과를 출력합니다.

 

#include <stdio.h>
int main()
{
	int i;
	char string[5]="Love";
	
	for(i=0;i<5;i++)
	{
		printf("%c", string[i]);	//문자 각각을 출력
	}
	
	printf("\n%s\n", string);		//변환문자 %s를 이용하여 출력

	return 0; 
}

출력결과

 

   

 

 

문자열의 입력

문자열을 입력받기 위해 scanf()함수를 이용할 때에는 문자나 정수를 입력받을 때와는 달리 '&'를 사용하지 않습니다. '&'를 사용하지 않고 배열 이름 만을 사용하는 이유는 배열 이름 자체가 메모리에서 배열 시작 주소를 나타내기 때문입니다. 변환문자 %s는 문자열이 저장된 메모리의 시작 주소를 입출력합니다. 따라서 &string[0]과 string은 같으므로, 배열 이름 string 만을 사용하는 것입니다.

 

더보기

코드

#include <stdio.h>
int main()
{
	char string[5]="Love";
	
	printf("%d\n", &string[0]);		//배열의 시작 주소를 출력
	printf("%d\n", string);			//배열명을 정수형으로 출력

	return 0; 
}

출력결과

 

코드

#include <stdio.h>
int main()
{
	int i;
	char name[20];
	
	printf("이름을 입력하세요:"); 
	scanf("%s", name);
	
	printf("\n당신의 이름은 %s입니다.\n", name);

	return 0; 
}

출력결과

 

 

 

 

한글 문자열

한글 문자열도 마찬가지로 %s를 이용하여 출력가능합니다. 한글은 2Byte이므로 한 글자식 출력하기 위해서는 %c%c로 가능하며, 띄어쓰기를 하는 경우 오류가 나타납니다.

 

코드

#include <stdio.h>
int main()
{
	int i;
	char name[7]="홍길동";
	
	printf("%s\n", name);
	
	printf("%c%c\n", name[0], name[1]);
	printf("%c %c\n", name[2], name[3]);
	printf("%c%c\n", name[4], name[5]);
		
	return 0;
}

출력결과

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'C 언어 프로그래밍 > 배열' 카테고리의 다른 글

2차원 배열  (3) 2020.06.07
1차원 배열  (0) 2020.06.06

댓글