이 프로그램은 문자열을 입력받아 그 안에 포함된 모든 공백을 제거합니다. 공백 없이 문자열을 저장하거나 처리해야 할 때 매우 유용하게 활용할 수 있습니다. 아래 예제를 통해 구현 방법과 동작 원리를 자세히 살펴보겠습니다.
입력: Hello World 출력: HelloWorld
동작 원리
문자열이나 문장에서 공백을 제거하려면 먼저 사용자로부터 문자열을 입력받아야 합니다. 이후 문자열을 처음부터 끝까지 순회하면서 각 문자가 공백인지 검사합니다.
공백을 발견하면 해당 위치 바로 뒤에 있는 문자부터 마지막 문자까지 한 칸씩 앞으로 당겨와 공백을 덮어쓰고, 문자열의 전체 길이를 하나 줄입니다. 이 과정을 문자열 끝까지 반복하면 문자열에 남아 있는 모든 공백이 제거됩니다.
예제 코드
#include <iostream>
#include <string.h>
using namespace std;
int main() {
char str[80] = "Hello World";
int i = 0, len, j;
len = strlen(str);
for (i = 0; i < len; i++) {
if (str[i] == ' ') {
for (j = i; j < len; j++)
str[j] = str[j+1];
len--;
}
}
cout << str;
return 0;
}코드 설명
1. 초기화: 크기 80의 문자 배열 str에 "Hello World"를 저장하고, strlen() 함수로 문자열의 실제 길이를 계산합니다.
2. 공백 검사: 첫 번째 for 루프가 문자열을 한 문자씩 확인하며 공백(' ')을 찾습니다.
3. 공백 제거: 공백을 발견하면 내부 for 루프가 공백 이후의 모든 문자를 한 칸씩 앞으로 이동시켜 공백을 덮어쓰고, len을 감소시켜 유효한 문자열 길이를 조정합니다.
4. 결과 출력: 모든 공백이 제거된 최종 문자열을 cout으로 출력합니다.
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
HelloWorld