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.
Mục lục
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
- #include <stdio.h>
- #include <string.h>
- char a[50];
- char *ptr = a;
- void NhapChuoi()
- {
- printf(“Nhap chuoi: “);
- gets(a);
- puts(“Chuoi vua nhap”);
- puts(ptr);
- }
- void XoaKhoangTrangDauChuoi()
- {
- puts(“Loai bo khoang trang dau chuoi”);
- int i = 0;
- while (a[i] == ‘ ‘)
- i++;
- ptr = &a[i];
- strcpy(a, ptr); // Gán chuỗi đã loại bỏ khoảng trắng đầu vào chuỗi ban đầu
- puts(a);
- }
- void XoaKhoangTrangCuoiChuoi()
- {
- puts(“Loai bo khoang trang cuoi chuoi”);
- int i = strlen(a) – 1;
- while (a[i] == ‘ ‘)
- i–;
- a[i + 1] = ‘\0‘;
- puts(a);
- }
- void XoaKhoangTrangThuaTrongChuoi()
- {
- puts(“Loai bo khoang trang thua giua cac tu”);
- //(giữa các từ chỉ cách nhau 1 khoảng trắng)
- for (int i = 0; a[i] != ‘\0‘; i++)
- {
- if (a[i] == ‘ ‘ && a[i + 1] == ‘ ‘)
- {
- for (int j = i + 1; a[j] != ‘\0‘; j++)
- {
- a[j] = a[j + 1]; // dịch sang trái
- }
- i–;
- }
- }
- puts(a);
- }
- }
- main()
- {
- NhapChuoi();
- XoaKhoangTrangDauChuoi();
- XoaKhoangTrangCuoiChuoi();
- 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