오늘의 문제는 공백과 대소문자 구분없이 한 문자열이 입력됐을 때, 대문자는 소문자로 바꾸고 공백은 제거해서, 한 단어로 만들어내는 것이다.
#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
char sentence[101], perfect[101];
int i, cnt=0;
gets(sentence);
for(i=0; sentence[i]!='\0'; i++){
if(sentence[i]>=65&&sentence[i]<=90){
perfect[cnt] = sentence[i] - 'A' + 'a';
cnt++;
}
else if(sentence[i]>=97&&sentence[i]<=122){
perfect[cnt] = sentence[i];
cnt++;
}
else{
continue;
}
}
perfect[cnt] = '\0';
cout<<perfect;
}
구글을 뒤지다가, 공백포함 문자열 받는것을 'getline'을 이용해서 했는데, 그냥 gets를 써버리면, 따로 인자 설정 필요없이 간편하게 할 수 있다.
또한 대문자를 소문자로 바꿀 때, 'A'를 빼주고 'a'를 다시 더해주는 방법도 있지만, 그냥 32를 더해주는 방법도 있다.
그리고 마지막에 꼭 널문자('\0') 를 넣어줘야 이상한 기호가 안찍힌다!