Phương pháp xóa các khoảng trắng của 1 chuỗi trong C

13:49 18/10/2024

Chuẩn hóa chuỗi giúp đảm bảo rằng dữ liệu được xử lý một cách đồng nhất, giúp cải thiện tính nhất quán và dễ dàng so sánh. Một trong các việc để chuẩn hóa một chuỗi là xóa các khoảng trắng thừa trong chuỗi. Cùng tìm hiểu cách dùng con trỏ và ký tự NULL (‘\0’) để xóa các khoảng trắng bằng các bước dưới đây.

1. Khai báo 1 mảng để minh họa

Giả sử ta có chuỗi sau 

char  a[ ] = “   HO   VA TEN   “;

char  *ptr = a;

2. Bỏ khoảng trắng ở đầu chuỗi

Dùng vòng lặp While để tìm ký tự đầu tiên khác ký tự ‘  ‘ .

Gán địa chỉ của ký tự trên vào nội dung của biến con trỏ

Copy chuỗi mà con trỏ trỏ tới vào chuỗi ban đầu

3. Loại bỏ khoảng trắng cuối chuỗi

Dùng vòng lặp While để tìm các ký tự trắng ‘ ‘ từ cuối chuỗi cho đến khi gặp ký tự khác ‘ ‘ thì dừng lại

Gán ký tự ‘\0’ vào phần tử phía sau ký tự trên

4. Loại bỏ các khoảng trắng thừa bên trong chuỗi

Giả sử chuỗi đã được loại bỏ các khoảng trắng ở đầu và cuối

Ta dùng vòng lặp để tìm hai ký tự trắng ‘ ‘

Nếu có hai ký tự trắng ‘ ‘ kề liền nhau thì ta dịch các ký tự phía sau chúng về bên trái một vị trí và cập nhật lại vị trí đang duyệt (giảm đi 1)

5. Code chương trình

  1. #include <stdio.h>
  2. #include <string.h>
  3. char a[50];
  4. char *ptr = a;
  5. void NhapChuoi()
  6. {
  7.     printf(“Nhap chuoi: “);
  8.     gets(a);
  9.     puts(“Chuoi vua nhap”);
  10.     puts(ptr);
  11. }
  12. void XoaKhoangTrangDauChuoi()
  13. {
  14.     puts(“Loai bo khoang trang dau chuoi”);
  15.     int i = 0;
  16.     while (a[i] == ‘ ‘)
  17.         i++;
  18.     ptr = &a[i];
  19.     strcpy(a, ptr); // Gán chuỗi đã loại bỏ khoảng trắng đầu vào chuỗi ban đầu
  20.     puts(a);
  21. }
  22. void XoaKhoangTrangCuoiChuoi()
  23. {
  24.     puts(“Loai bo khoang trang cuoi chuoi”);
  25.     int i = strlen(a) – 1;
  26.     while (a[i] == ‘ ‘)
  27.         i–;
  28.     a[i + 1] = \0;
  29.     puts(a);
  30. }
  31. void XoaKhoangTrangThuaTrongChuoi()
  32. {
  33.     puts(“Loai bo khoang trang thua giua cac tu”);
  34.     //(giữa các từ chỉ cách nhau 1 khoảng trắng)
  35.     for (int i = 0; a[i] != \0; i++)
  36.     {
  37.         if (a[i] == ‘ ‘ && a[i + 1] == ‘ ‘)
  38.         {
  39.             for (int j = i + 1; a[j] != \0; j++)
  40.             {
  41.                 a[j] = a[j + 1]; // dịch sang trái
  42.             }
  43.             i–;
  44.         }
  45.     }
  46.     puts(a);
  47. }
  48. }
  49. main()
  50. {
  51.     NhapChuoi();
  52.     XoaKhoangTrangDauChuoi();
  53.     XoaKhoangTrangCuoiChuoi();
  54.     XoaKhoangTrangThuaTrongChuoi();}

6. Kết luận

Xóa các khoảng trắng là một kỹ thuật quan trọng trong lập trình C, giúp đảm bảo dữ liệu đầu vào được xử lý một cách đồng nhất. Qua bài viết này, hy vọng sinh viên đã có được cái nhìn tổng quát về phương pháp xóa các khoảng trắng của cuỗi và cách triển khai nó trong ngôn ngữ C. 

Giảng viên Bùi Tuấn Vũ
Bộ môn Ứng dụng phần mềm
FPT Polytechnic TP HCM

Cùng chuyên mục

Đăng Kí học Fpoly 2024

  • Max. file size: 50 MB.
  • Max. file size: 50 MB.
  • Max. file size: 50 MB.