[2003년 중간 6번] 문자열 조작 출력 - 문자열 병합 / 대소문자 변환
목적
- 문자열을 조작할 줄 안다.
문제
코드
#include <cstring>
#include <ctype.h>
using namespace std;
int main(void)
{
char sIn[255] = {0};
char *spA, *spB, *spC;
spA = spB = spC = NULL;
cout << "첫번째 문자열을 입력하세요 : ";
cin.getline(sIn,255,'\n');
spA = new char[strlen(sIn) + 1];
strcpy(spA, sIn);
cout << "두번째 문자열을 입력하세요 : ";
cin.getline(sIn,255,'\n');
spB = new char[strlen(sIn) + 1];
strcpy(spB, sIn);
spC = new char[strlen(sIn) + strlen(sIn) + 1];
strcpy(spC, spA);
strcat(spC, spB);
cout << "첫번재 문자열 : " << spA << endl << "두번째 문자열 : " << spB << endl;
cout << "병합된 문자열 : " << spC << endl;
cout << "변환후 문자열 : ";
for(int i = 0; i < strlen(spC); i++)
{
if(islower(spC[i])) cout << (char)toupper(spC[i]);
else cout << (char)tolower(spC[i]);
}
cout << endl;
spA = spB = spC = NULL;
delete spA, spB, spC;
return 0;
}
해설
- tolower 나 toupper 의 리턴형은 int 이므로 강제 형변환(캐스트) 했습니다.
- 동적 할당으로 sIn 문자열을 용량을 할당받은 공간에 포인터로 받아 저장했습니다.
- 동적 할당을 받았으면 반환 하는 걸 잊지 말아야 합니다.
참고
- 유사 문제