[C] 문자
2022. 11. 25. 21:17ㆍC언어/기본 개념
728x90
아스키 코드
아스키 코드는 128개 문자를 0 ~ 127의 숫자로 어떤 값을 표현 하는 것이다.
종류 | 문자 상수 | 아스키 코드 | 출력 시 |
숫자문자(10개) | '0' ~ '9' | 48 ~ 57 | 문자 |
대문자(26개) | 'A' ~ 'Z' | 65 ~ 90 | 문자 |
소문자(26개) | 'a' ~ 'z' | 97 ~ 122 | 문자 |
특수 문자(33개) | ' '(공백), '$', '&' ... | 32, 36, 38 ... | 문자 |
제어 문자(33개) | '\0', '\t', '\n', '\r' ... | 0, 9, 10, 13 ... | 제어 기능 |
char small, cap = 'G'; if ((cap >= 'A') && (cap <= 'Z')) //대문자 범위인지 파악 (&&은 둘다 참일 경우에만 참) { small = cap + ('a' - 'A'); //아래 글 참고 } printf("대문자 : %c \n", cap); printf("소문자 : %c", small); |
대문자 : G 소문자 : g |
`소문자 아스키 코드가 대문자 아스키 코드보다 크다.
'a' - 'A'를 하고 그 값을 cap 값에 더해주면 'g' 값이 나온다.
scanf 함수
char ch1, ch2; scanf("%c%c", &ch1, &ch2); printf("[%d, %d]", ch1, ch2); return 0; |
|
ab [97, 98] |
a b [97, 32] |
예를 들어 ab를 키보드로 입력 했을 때는 [97, 98]이 나온다. 하지만 a b로 입력 했을 때는 [97, 32]로 나온다.
왜냐하면 %c는 공백도 문자로 인식하기 때문에 공백을 나타내는 아스키 코드인 32를 출력한다. space bar, tab, enter 같은 문자를 화이트 스페이스라고 한다.
만약 인식하지 않기를 바란다면 scanf에서 %c(공백)%c을 넣어주면 입력 된 공백은 인식하지 않는다.
getchar함수, putchar함수
scanf는 문자 뿐만 아니라 숫자도 입력하는 기능이 포함되어 있어 크기가 크다.
문자 전용 입출력 함수이다.
int getchar(void); < 매개변수가 없고 입력한 문자를 반환. int putchar(int); < 출력할 문자를 인수로 준다. |
char ch; ch = getchar(); //입력 받기 printf("입력한 문자 : "); putchar(ch); //출력 putchar('\n'); //출력 return 0; |
A 입력한 문자 : A |
버퍼
scanf 함수 과정을 보면 키보드 > 버퍼 > 변수 이다.
이 말은 데이터가 일단 버퍼에 저장 된 후에 scanf함수에 의해 변수에 입력 된다는 것이다.
char ch; int i; for (i = 0; i < 3; i++) { scanf("%c", &ch); printf("%c", ch); } |
|
tiger 입력시 tig만 출력 된다. |
tiger >> tig |
버퍼에 하나씩 들어간 값을 3번 출력.
scanf함수 반환값 활용
scanf함수는 Ctrl + Z를 누르면 -1이 반환 된다. Ctrl + Z를 누른 후 Enter를 누른 후에 Ctrl + Z를 한 번 더 입력해야 반환 될 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <stdio.h>
int main(void)
{
int res;
char ch;
while (1)
{
res = scanf("%c", &ch);
if (res == -1) break;
printf("%d", ch);
}
return 0;
}
|
cs |
A(입력) 6510cat 99971161020 |
아스키 코드 값을 출력한다
키보드로 숫자를 입력하는 경우에도 문자열의 형태로 버퍼에 저장 된다. 아스키코드 값으로 코드화 되어 저장됨.
728x90
'C언어 > 기본 개념' 카테고리의 다른 글
[C] 변수 영역 (0) | 2022.12.01 |
---|---|
[C] 문자열 (0) | 2022.11.28 |
[C] 배열과 포인터 (0) | 2022.11.24 |
[C] 포인터 (0) | 2022.11.21 |
[C] 배열 - Kyeom (0) | 2022.11.18 |