C언어_문자 and 문자열, 문자열 심화

P4·2023년 5월 2일
0

C언어 기초

목록 보기
16/23
post-thumbnail

문자

  • 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;
}

문자열 심화


예제코드 2 (ASCII CODE)

#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)
    }
}

예제코드 3 (ASCII CODE 구해보기)

#include <stdio.h>

int main(void)
{
    printf("아스키 코드값 확인해보기\n");
    for (int i = 0; i <= 127; i++)
    {
        printf("아스키코드 정수 %d : %c\n", i, i);
    }
}
profile
지식을 담습니다.

0개의 댓글