문제
문자의 각 인덱스에서 공백을 확인하여 while 루프를 사용하여 런타임에 입력된 문자열에서 모든 추가 공백을 제거합니다.
해결책
아래 주어진 예를 고려하십시오 -
주어진 문자열에서 모든 공백을 제거합니다. 주어진 문자열은 튜토리얼 포인트 C 프로그래밍입니다. . 공백을 제거한 후의 결과는 TutorialsPointCProgramming입니다. .
문자 배열을 문자열이라고 합니다.
다음은 문자열 선언입니다 -
char stringname [size];
예를 들어, char string[50]; 길이 50자의 문자열.
초기화
- 단일 문자 상수 사용
char string[10] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’ ,‘\0’}
- 문자열 상수 사용.
char string[10] = “Hello”:;
액세스
'\0'이 나타날 때까지 문자열에 액세스하는 데 사용되는 제어 문자열 "%s"가 있습니다.
문자열 사이의 추가 공백을 제거하는 데 사용한 논리는 다음과 같습니다. -
len = strlen(string); for(i=0; i<len; i++){ if(string[0]==' '){ for(i=0; i<(len-1); i++) string[i] = string[i+1]; string[i] = '\0'; len--; i = -1; continue; } if(string[i]==' ' && string[i+1]==' '){ for(j=i; j<(len-1); j++){ string[j] = string[j+1]; } string[j] = '\0'; len--; i--; } }
예시
다음은 문자열 개념을 사용하여 문장의 모든 여분의 공백을 제거하는 C 프로그램입니다 -
#include<stdio.h> int main() { char string[200]; int i, j, len; printf("Enter a statement: "); gets(string); len = strlen(string); for(i=0; i<len; i++) { if(string[0]==' ') { for(i=0; i<(len-1); i++) string[i] = string[i+1]; string[i] = '\0'; len--; i = -1; continue; } if(string[i]==' ' && string[i+1]==' ') { for(j=i; j<(len-1); j++) { string[j] = string[j+1]; } string[j] = '\0'; len--; i--; } } printf("\nNew String after removing extra spaces is = %s", string); getch(); return 0; }
출력
위의 프로그램이 실행되면 다음과 같은 출력을 생성합니다 -
Enter a statement: Welcome to The world of C programming New String after removing extra spaces is = Welcome to The world of C programming