C언어 문자 및 문자열의 차이 및 자료형 선언


C언어 문자(character) 자료형은 개별 문자 한 글자를 말하며 char와 작은 따옴표' '로 선언합니다. 문자열(string) 자료형은 둘 이상의 문자 데이터로 배열로의 [n] 개수 기능과 큰 따옴표" "로 선언합니다.

C언어 문자 vs 문자열

C언어에서 문자와 문자열은 다른 자료 구조입니다. 문자(chracter)는 'a', 'b‘, 'c', '$'', '#', '@' 등과 같은 단일 기호를 말합니다. 문자열(string)이란 "nice", "!!!", "hello" 등과 같은 두 개 이상의 문자 결합 구조를 말합니다.


자료형 의미 예시
문자(character) 단일 문자 a, b, c, #, $, @
문자열(string) 둘 이상의 결합 문자 hello, ohmygod, !@#

C언어 문자 자료형 선언

C언어의 문자 자료형은 메모리 한 칸에 하나의 문자만 삽입될 수 있습니다.

c-char-data-type-1

문자 자료형의 선언은 char 자료형에 변수명을 지정하고, 변수값으로 작은 따옴표 사이에 데이터를 한 개 삽입하면 됩니다.

char 변수명 = '변수값';

문자 자료형은 변수 하나에 하나의 문자만 삽입될 수 있습니다.


char x = 'a'; //변수 1개에 문자 1개 대입
char y = 'abc'; //변수 1개에 문자 n개 대입은 오류

또한 변수값은 작은 따옴표 ' ' 사이에 삽입되야 합니다. 정수나 실수 데이터도 ' ' 사이에 삽입되면 문자로 인식됩니다.

char x = 'c'; //변수값 c는 'c'와 같은 작은 따옴표 사이 위치
char y = '3'; //'3'은 문자 처리

숫자도 두 자릿수 이상의 정수나 소수는 문자열이 되므로 오류가 발생합니다. 문자 자료형은 액면가 그대로 문자 한 칸만 허용됩니다.

char x = '9'; //한 자리수 정수는 문자 처리됩니다.
char y = '13'; //두 자리수 정수는 13이 아니라 1과 3의 두 문자이므로 오류
char z = '0.1'; //소숫점은 마침표 까지 자리수에 포함되므로 세 자리 이상이 되므로 오류

C언어 문자열 자료형 선언

C언어에서 문자는 메모리 한 칸에 하나만 들어갈 수 있습니다. 따라서 문자열을 만들려면 메모리를 여러개 이어서 붙여야합니다. 이렇게 메모리가 여러개 이어진 구조를 배열이라고 부릅니다.

c-char-data-type-3


배열의 방법은 나중에 배우기로 하고, 문자열을 약식으로 설정하는 방법을 살펴보겠습니다.

char 변수명[문자 개수 + 1] = "변수값";

문자열 자료형은 먼저 삽입할 문자의 개수에서 1을 더한 값을 변수명 뒤에 [n] 작성합니다.

char x[4] = "123"; //문자 3개를 대입한다면 [4]
char x[8] = "abcdefg"; //문자 7개를 대입한다면 [8]

왜냐하면 문자열은 데이터 맨 뒷 공간에 \0이라는 값이 자동 저장되기 때문입니다. \0은 생략해도 되고 삽입해도 됩니다. C언어에서 \0은 한 문자로 취급됩니다.

char x[5] = "abcd\0"; //\0를 삽입해도 됩니다.

문자열은 "변수값"에 큰 따옴표가 삽입됩니다. 단일 문자에 사용하는 '변수값' 작은 따옴표는 오류가 발생합니다.

char x[3] = 'ab'; //작은 따옴표는 문자열에 사용할 수 없습니다.

C언어 문자 및 문자열 출력

C언어의 단일 문자(character) 자료형은 %c 기호로 출력합니다.


#include<stdio.h>
void main() {
	char x = 'A';

	printf("%c", x);
}

결과

A

C언어의 문자열(string) 자료형은 %s 기호로 출력합니다.

#include<stdio.h>
void main() {
	char x[10] = "abcdefghi"; //변수값은 큰 따옴표에, 그리고 [n] 개수는 문자보다 한 개 더 많이 적기

	printf("%s", x);
}

결과

abcdefghi

단일 문자는 %c, 문자열은 %s 기호를 사용해서 출력합니다.