6글자 단어를 담기위해 7개의 영역을 배치해 준것은 맨끝에 공백문자 (ASCII CODE 0)이 포함되기 때문
사람이 직접 정해주지 않아도 컴퓨터가 알아서 하긴 함
인코딩에 따라 글자의 byte수가 달라짐
#include <stdio.h>
int main(void)
{
char c = 'A';
printf("%c\n", c);
char str2[7] = "coding"; /* 문자열 끝에는 '끝'을 의미하는 NULL문자가 포함되어야 함, 따라서 한 칸이 더 필요함 */
printf("%s\n", str2);
for (int i = 0; i < sizeof(str2); i++) {
printf("| %c |", str2[i]); // 공백 문자가 출력된 것을 알 수 있음
}
printf("\n");
char str3[] = "coding";
printf("%s\n", str3);
printf("%lu\n", sizeof(str3)); // <-- 얘는 자동으로 7로 계산돼서 나옴
/* 문자열 byte 정리
영어는 한 글자가 1 byte
근데 한글은 한 글자가 2 byte
따라서 아래를 출력하면 출력값이 5가 나옴 */
// /* 원래는 5가 나와야 하는데 7이 나옴, 다음과 같은 이유때문
// CP949와 EUC-KR은 한글 1글자를 2바이트로 저장하는데, UTF-8은 한글 1글자를 3바이트로 저장합니다. */
char cha[] = "코딩";
printf("%lu\n", sizeof(cha)); // 출력값 7
// sizeof의 출력값이 unsigned long이라 lu로 받음
return 0;
}
#include <stdio.h>
int main(void)
{
char c_array[10] = {'c', 'o', 'd', 'i', 'n', 'g'};
// 이러면 남은 칸은 전부 빈칸이 들어감, 출력하는데에는 아무 문제가 없음
for (int i = 0; i < sizeof(c_array); i++)
{
printf("%d\n", c_array[i]); // 이렇게 정수로 받으면 ASCII code가 출력됨, NULL값은 ASCII코드상 0임 (문자열로 입력하면 \0)
}
}
#include <stdio.h>
int main(void)
{
printf("아스키 코드값 확인해보기\n");
for (int i = 0; i <= 127; i++)
{
printf("아스키코드 정수 %d : %c\n", i, i);
}
}