Trong bài viết này chúng ta sẽ cùng làm bài toán tách tên người từ chuỗi nhập vào.
Tách tên người trong lập trình C
Ví dụ nhập tên là Nguyen Van Suu, vậy làm sao để tách riêng được chữ Suu từ chuỗi ban đầu.
Ví dụ chuỗi nhập vào là biến Name.
Cách 1: Ta khai báo thêm một biến gọi là firstName gắn ban đầu bằng rỗng, ta duyệt chuỗi Name từ cuối về đầu chuỗi và đồng thời gắn kí tự đó vào biến firstName, cho đến khi gặp một dấu cách thì ta dừng vòng lặp lại và đảo ngược chuỗi firstName ta lấy được tên chính xác.
Code minh họa
#include <stdio.h>
#include <string.h>
int main()
{
char Name[100]; //Khai báo biến name gồm tối đa 100 phần tử
printf("Nhap ten: ");
gets(Name); //Nhập họ tên từ bàn phím
char firstName[100]; //Khai báo biến để lưu tên tách ra từ biến name
int len = strlen(Name); //Lấy độ dài chuỗi Name
//Duyetehj vòng lặp ngược từ cuối về đầu chuỗi
int i;
for(i = len-1; i >= 0; i--){
if(Name[i] == ' ') break; //Kiểm tra nếu gặp ký tự khoảng trắng ta sẽ dừng vòng lặp
firstName[len-i-1] = Name[i]; //len-i-1 là lấy đối xứng của i, lúc này nó sẽ chạy từ 0, 1, 2, 3....
}
strrev(firstName); //Hàm đảo ngược chuỗi firstName
printf("Tach ten: ");
puts(firstName); //In tên người tách được
}
Kết quả khi chạy chương trình
Cách 2: Cũng tương tự như cách 1, nhưng lúc này chỉ khi ta gặp dấu cách thì ta sẽ dùng hàm strcpy để coppy ký tự từ vị trí của dấu cách đó đến cuỗi chuỗi Name sang chuỗi firstName.
Code minh họa
#include <stdio.h>
#include <string.h>
int main ()
{
//Đoạn này như chương trình trên kg có gì thay đổi
char Name[100];
printf("nhap vao ho ten: ");
gets(Name);
char firstName[100];
int len=strlen(Name);
int i=len-1;
//Duyệt ngược vòng lặp tìm vị trí dấu cách trước tên người
while ((Name[i])!=' ')
{
i--;
}
//Vì lúc này i là vt của dấu cách nên ta sẽ coppy ký tự thứ i+1 tới cuối chuỗi của Name sang firstName
strcpy(firstName, Name + (i+1));
printf("Tach ten: ");
puts(firstName); //Hiển thị tên
}
Về cơ bản thì bài toán này chỉ có như vậy, chúc bạn học thật tốt!
[XEM THÊM NHIỀU BÀI VIẾT LẬP TRÌNH C/C++ TẠI ĐÂY]
sao mình chạy luôn có kí tự rác + tên vậy