Trong nhiều ứng dụng và hệ thống thông tin hiện nay, việc xử lý thông tin cá nhân như họ và tên là rất quan trọng. Một trong những thách thức lớn là tách biệt họ, tên và đệm từ chuỗi họ và tên được nhập từ bàn phím. Bài viết này sẽ trình bày về phương pháp tách họ, tên và đệm.
- Định nghĩa và cấu trúc họ và tên
Trong văn hóa Việt Nam, cấu trúc họ và tên thường có dạng: Họ + Tên (đệm). Ví dụ, trong tên “Nguyễn Văn A”, “Nguyễn” là họ, “Văn” là đệm, và “A” là tên chính. Tuy nhiên, không phải lúc nào chuỗi nhập cũng theo đúng quy tắc này. Trong một số trường hợp, tên có thể gồm nhiều từ, ví dụ như “Nguyễn Thị Bích Hằng”. Cũng có những trường hợp không có tên đệm, ví dụ “Nguyễn A”.
- Phương pháp tách họ, tên, và đệm
Để tách họ, tên và đệm từ một chuỗi nhập vào, có thể thực hiện các bước sau:
Bước 1: Nhận chuỗi nhập
Người dùng nhập chuỗi họ và tên, ví dụ: “Nguyễn Văn A”.
char str[50];
printf(“Nhap ho va ten: “);
gets(str);
Bước 2: Phân tách các từ
Sử dụng hàm phân tách (strtok) để chia chuỗi thành các phần tử và lưu chúng vào một mảng hai chiều
char *dauCach = “ ”;//có thể dùng nhiều dấu cách “;:. “
char *substr;
char save[100][50];//Dùng để lưu các từ
substr = strtok(str, daucach);
int n = 0;
while (substr != NULL)
{
strcpy(save[n], substr);
n++;
substr = strtok(NULL, dauCach);
}
n = n – 1;//số từ trong chuỗi
Bước 3: Xác định họ, tên và đệm
Theo quy tắc, phần tử đầu tiên trong mảng là họ, phần tử cuối cùng là tên, và các phần tử nằm giữa là đệm. Ở đây ta phải chú ý trường hợp họ tên không có đệm lót tức là số phần tử của mảng là 2
printf(“Ho: %s\n“, save[0]);
printf(“Ten: %s\n“, save[n]);
printf(“Dem lot: “);
if (n == 1)
{
printf(“Khong co”);
}
else
for (int i = 1; i < n; i++)
{
printf(“%s “, save[i]);
}
- Kết luận
Việc tách họ, tên và đệm từ một chuỗi nhập vào là một kỹ thuật quan trọng trong lập trình và quản lý dữ liệu. Qua các bước đơn giản, chúng ta có thể dễ dàng xử lý và phân tích thông tin cá nhân, phục vụ cho nhiều mục đích khác nhau.
Giảng viên Bùi Tuấn Vũ
Bộ môn Ứng dụng phần mềm
FPT Polytechnic TP HCM