아스키 코드는 128개의 문자를 0~127의 숫자 중에 각각 어떤 값으로 표현할지 정의한 것이다.
종류 | 문자 상수 | 아스키 코드 값 | 출력할 때 |
---|---|---|---|
숫자 문자 (10개) | 0 ~ 9 | 48 ~ 57 | 문자 출력 |
대문자 | A ~ Z | 65 ~ 90 | 문자 출력 |
소문자 | a ~ z | 97 ~ 122 | 문자 출력 |
특수 문자 | 공백, $, & | 32, 36, 38 | 문자 출력 |
제어 문자 | \0, \t, \n, \r | 0, 9, 10, 13 | 제어 기능 수행 |
&&(AND) → a && b : a와 b가 모두 참이면 1, 그렇지 않으면 0 : 둘 다 참이면 1, 그렇지 않으면 0
//(OR) → a // b : a와 b중 하나라도 참이면 1, 그렇지 않으면 0 : 둘 중에 하나라도 참이면 1
!(NOT) → !a : a가 거짓이면 1, 참이면 0 : 거짓이면 1
#include <stdio.h>
int main(void)
{
char small, cap = 'G'; // char형 변수 선언과 초기화
if ((cap >= 'A') && (cap <= 'Z')) // 대문자 범위라면
{
small = cap + ('a' - 'A'); // 대/소문자의 차이를 더해 소문자로 변환
}
printf("대문자 : %c %c", cap, '\n'); // '\n'를 %c로 출력하면 줄이 바뀐다.
printf("소문자 : %c", small);
return 0;
}
#include <stdio.h>
int main(void)
{
char ch1, ch2;
scanf("%c%c, &ch1, &ch2"); // 2개의 문자를 연속 입력
printf("[%c%c]", ch1, ch2); // 입력된 문자 출력
return 0;
}
scanf함수는 문자뿐만 아니라 숫자도 입력하는 기능이 포함되어 있어서 문자만 입력하는 함수에 비해 크기가 크다printf함수도 마찬가지이다. 따라서 문자만 입출력하는 경우는 문자 전용함수를 쓰는 것이 효율적이다.
따라서, getchar 함수와 putchar 함수는 문자 전용 입출력 함수로 원형을 아래와 같다.
💡 int getchar(void); → 매개변수가 없고 입력한 문자를 반환한다. 💡 int putchar(int); → 출력할 문자를 인수로 준다.#include <stdio.h>
int main(void)
{
int ch; // 입력 문자를 저장할 변수
ch = getchar(); // 함수가 반환하는 문자를 바로 저장
printf("입력한 문자 : ");
putchar(ch); // 입력한 문자 출력
putchar('\n'); // 개행 문자 출력
return 0;
}
모든 문자 상수는 아스키 코드 값으로 바뀌어 숫자로 저장되고 연산된다.
%c 변환 문자는 화이트 스페이스(공백 문자, 탭 문자, 개행 문자)도 입력하며, %c 앞에 공백을 사용하면
화이트 스페이스를 입력에서 제외할 수 있다.
getchar, putchar 함수는 문자 전용 입출력 함수이다.