C언어 문자열 배열은 일반 배열 또는 큰 따옴표로 간단히 선언할 수 있습니다. 문자열 배열 출력은 printf(%s)
또는 puts()
함수를 사용합니다. 공백 유무에 따라 사용 함수가 달라질 수 있습니다.
C언어 문자열 배열 생성
C언어 문자열은 배열로 저장을 합니다. 문자열을 배열에 넣는 기본적인 구조는 일반 정수 처럼 데이터를 하나씩 쉼표로 나열하는 것입니다. 문자이기 때문에 각 문자에는 작은 따옴표가 붙습니다.
char x[5] = { 'a', 'b', 'c', 'd' };
또는 각 배열 원소에 개별 삽입할 수 있습니다.
char x[5];
x[0] = '1';
x[1] = '2';
x[2] = '3';
x[3] = '4';
C언어 문자열 자료형을 생성하는 가장 쉬운 방법은 큰 따옴표에 삽입하는 방법입니다.
char x[5] = "abcd";
배열은 선언시 개수를 입력하지 않아도 배열 개수를 자동 계산해서 생성합니다.
char x[] = "abcd";
배열 개수보다 실제 값이 부족할 경우 잔여 메모리 공간에는 \0
요소가 삽입됩니다.
char x[5] = "a";
배열의 개수는 항상 실제 값의 개수 보다 한 개 많다는 것을 유의합니다.
char x[5] = "abcde"; //문자 5개가 들어가면 오류입니다. (배열 개수 - 1개) = 4개만 들어갈 수 있습니다.
char x[5] = "abcd\0"; //또는 \0 문자를 채워넣으면 됩니다.
C언어 문자열 배열 출력
문자열 배열의 출력은 %s
기호를 사용합니다.
#include<stdio.h>
void main() {
char x[5] = "abcd\0";
printf("%s", x);
}
결과
abcd
하지만 puts(변수명)
함수를 사용하면 같은 기능을 하면서 코드 길이를 줄일 수 있습니다.
#include<stdio.h>
void main() {
char x[5] = "abcd\0";
puts(x);
}
C언어 문자열 배열 입력
띄어쓰기가 없는 문자열은 scanf()
함수로 입력을 받을 때 %s
기호의 사용이 가능합니다.
#include<stdio.h>
void main() {
char x[6];
printf("abcde를 입력해보세요.");
scanf("%s", &x);
printf("%s", x);
}
결과
abcde
하지만 입력한 글자에 공백이 있는 경우 오류가 발생합니다. 그럴 경우 헤더에 #include<string.h>
함수를 추가해주고, scanf()
에서는 데이터를 %s
에서 %[^n]
으로 변경해주면 됩니다.
#include<stdio.h>
#include<string.h>
//문자열 함수를 불러옵니다.
void main() {
char x[6];
printf("aa aa를 입력해보세요.");
scanf("%[^\n]", &x); //%s대신 %[^\n] 대입
printf("%s", x);
}
결과
aa aa
또는 헤더에 함수 추가나 scanf()
를 사용하지 않고 gets(변수)
라는 간단한 함수로 공백을 입력받을 수 있습니다.
#include<stdio.h>
void main() {
char x[6];
printf("ab aa를 입력해보세요.");
gets(x);
puts(x);
}
결과
aa aa
출력에 puts()
함수까지 사용하면 코드 길이는 더 짧아집니다.