Vấn đề
Xóa tất cả các khoảng trắng thừa khỏi một chuỗi đã nhập trong thời gian chạy với sự trợ giúp của vòng lặp while bằng cách kiểm tra các khoảng trắng ở mỗi chỉ mục của một ký tự.
Giải pháp
Hãy xem xét một ví dụ được đưa ra bên dưới -
Nó loại bỏ tất cả các khoảng trắng khỏi một chuỗi nhất định. Chuỗi đã cho là Hướng dẫn lập trình điểm C . Kết quả sau khi loại bỏ khoảng trắng là TutorialsPointCProgramming .
Một mảng các ký tự được gọi là một chuỗi.
Dưới đây là khai báo của một chuỗi -
char stringname [size];
Ví dụ, chuỗi ký tự char [50]; chuỗi dài 50 ký tự.
Khởi tạo
- Sử dụng hằng số ký tự.
char string[10] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’ ,‘\0’}
- Sử dụng hằng số chuỗi.
char string[10] = “Hello”:;
Đang truy cập
Có một chuỗi điều khiển “% s” được sử dụng để truy cập vào chuỗi cho đến khi nó gặp ‘\ 0’.
Logic mà chúng tôi đã sử dụng để loại bỏ khoảng trắng thừa giữa các chuỗi như sau -
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--; } }
Ví dụ
Sau đây là chương trình C để loại bỏ tất cả các khoảng trắng thừa trong một câu bằng cách sử dụng các khái niệm chuỗi -
#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; }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
Enter a statement: Welcome to The world of C programming New String after removing extra spaces is = Welcome to The world of C programming