아스키 코드 활용 소문자를 대문자로 바꾸기
C언어에서 아스키코드를 활용해 모든 소문자를 대문자로 바꾸는 프로그램을 정리합니다.
여기서 주목할 것은 아스키 테이블 상에서 대문자가 소문자보다 먼저 나온다는 것과, A와 a는 아스키코드상으로 32만큼 차이가 난다는 사실입니다.
소문자를 대문자로 바꾸기 코드
#include <stdio.h>
int main(void){
char msg[] = "abcdefgABC123";
int i;
printf("원본 문자열 : %s\n", msg);
for(i = 0; msg[i]; i++){
if('a'<=msg[i] && 'z'>=msg[i])
msg[i] = msg[i] - ('a'- 'A');
}
printf("바뀐 문자열 : %s\n", msg);
return 0;
}
간단 설명:
11번째 줄 : msg배열의 0번째부터 마지막까지(널 문자 '\0'을 만날 때 까지) for문을 진행합니다.
12번째 줄 : 배열의 값이 알파벳 소문자에 해당할 경우
13번째 줄 : 해당 값에서 'a'와 'A'의 차이만큼을 뺀다. (32를 뺸다)
이유 : a와 A는 아스키코드 상에서 32만큼 차이가 난다. 32를 직접 빼줘도 되지만, 'a'-'A'를 하게 되면 그 값이 32가 되기에 이를 이용해도 된다. 그리고 현재 배열의 값인 소문자가 원하는 값인 대문자보다 32만큼 크기에 구한 값을 빼준다.
아스키코드표
개인 공부를 정리하는 블로그입니다. 부족한 부분이나 오류를 발견하면 댓글 남겨주시길 바랍니다.
'컴퓨터 > C, C++' 카테고리의 다른 글
[C언어] CSV 컴마 < , >로 구별된 숫자를 출력하는 프로그램 (0) | 2021.12.08 |
---|---|
[C언어] 단어 개수를 세는 프로그램, 공백으로 단어 구별 (0) | 2021.12.08 |
[C언어] 아스키코드 활용 알파벳 판별 및 대소문자 판별 프로그램 (0) | 2021.12.07 |
[C언어] 입력값으로 시, 분, 초 구하기 (0) | 2021.12.07 |
[C언어] 입력하는 범위 사이 n의 배수의 합 구하기 (0) | 2021.12.07 |
댓글