ปัญหา
ลบช่องว่างพิเศษทั้งหมดออกจากสตริงที่ป้อนขณะรันไทม์โดยใช้ while loop โดยตรวจสอบช่องว่างที่ดัชนีแต่ละตัวของอักขระ
วิธีแก้ปัญหา
ลองพิจารณาตัวอย่างด้านล่าง −
จะลบช่องว่างทั้งหมดออกจากสตริงที่กำหนด สตริงที่กำหนดคือ Tutorials Point C Programming . ผลลัพธ์หลังจากลบช่องว่างคือ TutorialsPointCProgramming .
อาร์เรย์ของอักขระเรียกว่าสตริง
รับด้านล่างเป็นการประกาศของสตริง −
char stringname [size];
ตัวอย่างเช่น สตริงอักขระ[50]; สตริงที่มีความยาว 50 ตัวอักษร
การเริ่มต้น
- การใช้ค่าคงที่อักขระตัวเดียว
char string[10] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’ ,‘\0’}
- การใช้ค่าคงที่สตริง
char string[10] = “Hello”:;
การเข้าถึง
มีสตริงควบคุม “%s” ที่ใช้สำหรับเข้าถึงสตริงจนกว่าจะพบ '\0'
ตรรกะที่เราใช้ในการลบช่องว่างพิเศษระหว่างสตริงมีดังนี้ -
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