C언어는 문자열을 표현하기 위해 배열(Array)를 활용한다.
그리고 문자열을 표현하기 위해 보통 1byte 크기인 'char' 타입을 사용한다.
문자열의 끝은 NULL을 사용한다. (문자열 마지막에 \0 이 있으면 문자열의 끝으로 인식)
고로 문자열의 크기는 마지막 1개가 더 필요하다. ("hello world!"의 경우에는 각 알파벳 + 띄어쓰기 + NULL 하여 총12개 필요)
각 배열에 들어가는 문자 하나하나는 모두 아스키코드이다. (아스키코드 번호임)
선언하고 만드는 방법은 아래와 같다.
<타입> <배열이름 [배열크기] >
// NULL과 띄어쓰기를 포함하여 총 13개의 char 크기가 필요
char str[13] = "Hello world!";
배열의 크기는 미리 정하지 않고 배열을 입력하면 알아서 사이즈가 잡히게 된다.
char str2[] = "hello world!";
아래 예시 코드를 돌려서 크기를 확인
#include <stdio.h>
/*
배열은 보통 char형을 사용.
알파벳 하나하나가 배열 한칸에 할당.
문자열 구조는 맨 끝에 NULL문자( '\n' )가 들어가야 함
*/
int main()
{
// NULL문자를 포함한 13개 배열이 할당되어야 함.
char str1[13] = "nice to meet";
// 배열크기 자동조절, hello NULL 문자 총 6개 배열이 할당됨. str2라는 주소에 값 할당.
char str2[] = "hello world!";
printf("배열 크기 : %d", sizeof(str1));
printf("배열 크기 : %d", sizeof(str2));
return 0;
}
(결과)
* 문자열을 scanf로 받는 방법.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
// 아래와 같은 배열명 선언은 배열 변수명 자체가 주소값으로 저장됨.
char str[50];
int index = 0;
printf("문자열 쓰시오. :");
// 문자열 변수명 str은 그자체가 주소값을 지칭하므로 &없이 사용. 즉, &str 으로 사용하지 않음.
scanf("%[^\n]", str);
printf("입력받은 문자열 : %s\n", str);
printf("문자 단위 출력: ");
while (str[index] != '\0')
{
printf("%c", str[index]);
index++;
}
printf("\n");
return 0;
}
(결과)
아래에서 scanf에 %[^\n] 을 입력한 이유는, 띄어쓰기 키가 와도 문자열을 계속 이어서 str에 저장하기 위함.
'C언어 \ C++ > 포인터 \ 배열' 카테고리의 다른 글
[C언어] 포인터로 문자열 선언, 배열 문자열 선언과 차이. (문자열 내부 변경하기) (0) | 2022.02.05 |
---|---|
[C언어] C언어 배열을 포인터로 변환하기 (배열을 포인터로 바꾸기) (0) | 2022.02.05 |
[C언어] C언어 배열과 포인터의 관계 (변수형 포인터, 상수형 포인터), 포인터로 배열 변경하기 (0) | 2022.02.05 |
[C언어] 포인터 변수의 초기화 선언 (잘못된 사용시 위험성) (0) | 2022.02.05 |
[C언어] 포인터란? 포인터에 대해 쉽게 이해하기. (포인터 변수 사용하기, 포인터로 값 변경하기, * 연산자의 역할) (0) | 2022.02.03 |