Taking baby-developer steps

10. 문자 - 아스키 코드 / 문자 입출력 함수 / 문자와 버퍼 본문

CS 지식/C언어_basic

10. 문자 - 아스키 코드 / 문자 입출력 함수 / 문자와 버퍼

Surin Lee 2021. 3. 25. 00:13

문자

C언어에서 문자를 처리하는 방법에 대해 학습하고, 문자와 버퍼의 관계를 이해하고 활용하는 것을 목표로 한다.

 

아스키 코드

C프로그램의 문자는 아스키 코드(Ascii Code)를 따른다. 아스키 코드는 0~127중의 1바이트로 구성되며, 주요 문자를 출력하도록 해준다. cf)  한글 등과 같은 유니코드는 조금 더 많은 바이트로 구성된다. 다음과 같은 주요 문자는 외워두는게 좋다.

0~9 48~57
A~Z 65~
a~z 97~

아스키 코드로 인해, 캐릭터형 자체에 숫자를 넣어서 처리할 수 있다. 문자 입출력에서 형식 지정자로 %c를 사용한다.

(C언어에서의 문자가 아스키 코드를 따르므로 char형은 각각 '숫자'에 매치가 된다. 이는 컴퓨터가 사실 char형을 '숫자'로써 처리한다는 것이다.)

#include <stdio.h>

int main(void){
	char a = 65;
    printf("%c\n", a);
	return 0;
}

-> A

 

문자 입출력 함수

 getchar()를 이용해서 입력을 받는 방식을 이용할 수 있다. 단, getchar()는 단 하나의 문자를 입력 받는다.

#include <stdio.h>

int main(void){
	char a = getchar();
    printf("%c\n", a);
	return 0;
}

 

문자와 버퍼

문자열을 처리 할 때, 버퍼의 개념이 많이 사용된다. 버퍼(Buffer)란, 임시적으로 특정한 데이터를 저장하기 위한 목적으로 사용된다. C프로그램은 기본적으로 사용자가 의도하지 않아도, 자동으로 버퍼를 이용해 입출력을 처리한다. 서로 다른 자료형 변수의 입력값을 받을 때, 엔터로 인해 흔히 오류가 발생 하곤 하는데, 이러한 입력 버퍼를 지우기 위해서는 다음과 같은 코드가 필요하다. (입력값을 파일로 받고 있다고 가정했을 때까지 포함해서 EOF도 포함해서 만든 코드)

int a; char c;
scanf("%d", &a);
printf("%d\n",a);
int temp;
while ((temp = getchar()) !=EOF && temp !='\n'){ }
// 한 자씩 받아서 파일의 끝이거나 개행문자를 만나면 입력을 멈추므로, 항상 입력 버퍼를 비운다.
scanf("%c",&c);
printf("%c\n",c);

 

요약

  1. C언어에서의 문자는 내부적으로 아스키 코드 구조를 따른다.
  2. C언어에서 문자 입출력의 내부에는 버퍼(Buffer)가 존재한다..
Comments