Em viết chương trình tách tên từ họ tên như sau:
#include <string.h>
#include <stdio.h>
#include<iostream>
using namespace std;
char *getname(char *str){
char *token, *temp;
/* lay token dau tien */
token = strtok(str, " ");
/* duyet qua cac token con lai */
while( token != NULL )
{
temp=token;
token = strtok(NULL, " ");
}
return temp;
}
int main()
{
char str[80] = "Nguyen Van An";
cout << getname(str) << endl; // In ra ten
cout<<str; //In ho ten lan nua,
}
Và kết quả như sau:
Do truyền trực tiếp con trỏ str vào hàm nên giá trị gốc của str cũng bị thay đổi. Có cách nào để hàm xử lí mà không làm thay đổi giá trị ban đầu k ?