C언어 문자(character) 자료형은 개별 문자 한 글자를 말하며 char
와 작은 따옴표' '
로 선언합니다. 문자열(string) 자료형은 둘 이상의 문자 데이터로 배열로의 [n]
개수 기능과 큰 따옴표" "
로 선언합니다.
C언어 문자 vs 문자열
C언어에서 문자와 문자열은 다른 자료 구조입니다. 문자(chracter)는 'a'
, 'b
‘, 'c'
, '$''
, '#'
, '@'
등과 같은 단일 기호를 말합니다. 문자열(string)이란 "nice"
, "!!!"
, "hello"
등과 같은 두 개 이상의 문자 결합 구조를 말합니다.
자료형 | 의미 | 예시 |
---|---|---|
문자(character) | 단일 문자 | a , b , c , # , $ , @ … |
문자열(string) | 둘 이상의 결합 문자 | hello , ohmygod , !@# … |
C언어 문자 자료형 선언
C언어의 문자 자료형은 메모리 한 칸에 하나의 문자만 삽입될 수 있습니다.
문자 자료형의 선언은 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언어에서 문자는 메모리 한 칸에 하나만 들어갈 수 있습니다. 따라서 문자열을 만들려면 메모리를 여러개 이어서 붙여야합니다. 이렇게 메모리가 여러개 이어진 구조를 배열이라고 부릅니다.
배열의 방법은 나중에 배우기로 하고, 문자열을 약식으로 설정하는 방법을 살펴보겠습니다.
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 기호를 사용해서 출력합니다.