WinCNT

C 언어 - 10. 문자 본문

Study/C

C 언어 - 10. 문자

WinCNT_SSS 2021. 8. 5. 00:23

아스키 코드

  • C언어의 문자는 아스키 코드(Ascii Code)를 따른다.
  • 아스키 코드는 0~127중의 1바이트로 구성되어 있다.
  • 대표적인 아스키 코드의 예시
    0 48
    A 65
    a 97
#pragma region "아스키 코드"
#include <stdio.h>

int main(void)
{
    char zero = 48;
    char cSmallA = 65;
    char cCapitalA = 97;

    printf("%c\n", zero);
    printf("%c\n", cSmallA);
    printf("%c\n", cCapitalA);

    system("pause");
    return 0;
}
#pragma endregion

문자의 입출력

  • getchar() 함수
    • 단 하나의 문자를 입력받는 함수
      • 버퍼에 데이터가 있을 때버퍼 가장 앞의 데이터를 반환
      • 버터에 데이터가 없을 때줄 바꿈 문자(\n)가 올 때까지 입력을 받아 버퍼에 저장하고 가장 앞의 데이터를 반환
        이 때 줄 바꿈 문자(\n)도 버퍼에 저장
        #pragma region "문자의 입출력 함수"
        #include <stdio.h>
        
        int main(void)
        {
            char a = getchar();
            printf("%c\n", a);
            system("pause");
            return 0;
        }
        #pragma endregion​
  • 버퍼(Buffer)
    • 임시적으로 특정한 데이터를 저장하기 위한 목적으로 사용함
    • C언어는 기본적으로 사용자가 의도하지 않아도 자동으로 버퍼를 이용해 입출력을 처리함
    • 입력 버퍼로 인해 흔히 발생하는 오류(숫자와 문자를 동시에 입력받을 경우)
      #pragma region "입력 버퍼로 인해 흔히 발생하는 오류"
      #define _CRT_SECURE_NO_WARNINGS
      #include <stdio.h>
      
      int main(void)
      {
          int a;
          char c;
          scanf("%d", &a);
          printf("%d\n", a);
          scanf("%c", &c); //변수 a 출력 후의  줄 바꿈(\n)이 입력으로 처리되어 바로 출력 됨
          printf("%c\n", c);
          system("pause");
          return 0;
      }
      #pragma endregion​
    • 남아 있는 입력 버퍼를 제거해야 위와 같은 오류가 발생하지 않는다.
      #pragma region "남아 있는 입력 버퍼 제거하기"
      #define _CRT_SECURE_NO_WARNINGS
      #include <stdio.h>
      
      int main(void)
      {
          int a;
          char c;
          scanf("%d", &a);
          printf("%d\n", a);
          
          //모든 문자는 내부적으로 숫자로 처리하기 때문에 int형을 사용할 수 있다
          int temp;
      
          //EOF = End Of File, 파일로 입력을 받고 있을 때의 파일의 마지막(아스키 코드로 -1)
          //줄 바꿈 문자(\n)는 아스키 코드로 10
          while ((temp = getchar()) != EOF && temp != '\n')
          {
              //버퍼에 남아있는 문자를 getchar()로 앞부터 차례로 한 문자씩 반환한다.
              //파일의 끝(EOF)이거나 줄 바꿈 문자(\n)면 버퍼의 모든 문자가 반환(버퍼가 비워짐) 반복문을 종료함
          }
      
          scanf("%c", &c);
          printf("%c\n", c);
      
          system("pause");
          return 0;
      }
      #pragma endregion

 

'Study > C' 카테고리의 다른 글

C 언어 - 12. 컴퓨터가 변수를 처리하는 방법  (0) 2021.09.06
C 언어 - 11. 문자열  (0) 2021.09.05
C 언어 - 09. 포인터  (0) 2021.08.03
C 언어 - 08. 배열  (0) 2021.08.03
C 언어 - 07. 함수  (0) 2021.08.03