[C언어] 대소문자를 교차 교환
C언어에서 재밌는 부분이 문자 제어입니다. 컴퓨터 자료 정리 중이라 최근 C언어 일부 내용을 post로 작성 중인데 그냥 넘어가기가 아쉬워서 이번에도 C언어 post를 작성합니다. 오늘 다룰 내용은 입력된 알파벳 문자열을 대소문자를 서로 교차해서 교환하는 실험입니다. 입력 된 문자가 대문자이면 소문자로 바꾸고 소문자이면 대문자로 변경하는 코딩을 실험하겠습니다.
1. 문자열 입력
입력 문자열은 단순하게 넉넉한 배열 저장 공간을 잡아놓고 scanf()함수로 입력을 받습니다.
char str[256];
scanf("%s",str);
포인터변수를 쓸까 했는데 그냥 단순하게 표현했네요.
2. 대소문자 교차 교환
for(i=0;str[i];i++){
if(str[i] >= 'a' && str[i] <= 'z'){
str[i] = str[i] - 32;
printf("%c",str[i]);
}
else if(str[i] >= 'A' && str[i] <= 'Z'){
str[i] = str[i] + 32;
printf("%c",str[i]);
}
}
위 코딩을 보시는 것처럼 for문으로 입력된 문자열을 순차적으로 루프를 돌게 되는데 이때 if문으로 소문자 a~z까의 알파벳 문자이면 -32을 빼주면 해당 알파벳의 대문자 위치가 됩니다. 반대로 대문자 A~Z까지 이면 +32하면 해당 알파벳이 소문자 위치가 됩니다. 간단히 소문자이면 대문자위치(-32)로 이동 시키고 대문자이면 소문자위치(+32)로 이동 시키는 코딩입니다.
왜! 32를 빼주고 더해주냐면 각 문자의 아스키코드값 숫자값의 차이가 32이기 때문입니다.
a => 97
A => 65
a-A => 32
이렇게 a문자를 A문자로 바꿀려면 97-32하면 65가 되여 A문자로 만들어지는 것이죠.
3. 코딩
위 대소문자 교차 교환 코딩을 실행 시켜 봅시다.
#include<stdio.h>
void main()
{
int i;
char str[256];
scanf("%s",str);
for(i=0;str[i];i++){
if(str[i] >= 'a' && str[i] <= 'z'){
str[i] = str[i] - 32;
printf("%c",str[i]);
}
else if(str[i] >= 'A' && str[i] <= 'Z'){
str[i] = str[i] + 32;
printf("%c",str[i]);
}
}
printf("\n");
}
[결과]
마무리
간단히 문자열을 가지고 재밌는 실험을 했네요.
짱짱맨 호출에 응답하였습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
방문해주셔서 감사해요
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
오호~ 문장 오류를 발견했을때 한방에 딱 정리할 수도 있겠네욤. 코딩이 참 똑똑하군요.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
인간의 상상력에 따라서 코딩은 많은 것들을 할 수 있지요.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit