Một cách là bạn có thể đểm từ 0 tới khoảng trắng đầu tiên để xác định kích thước cần malloc()
, cách khác là dùng strtok()
để tách Nguyen Van A
thành "Nguyen", `"Van", "A"
rồi in ra cái đầu tiên.
#include <stdio.h>
#include <stdlib.h>
static const int N = 512;
static char *nhap_ten()
{
char *ten = (char *) malloc(N * sizeof(char));
gets(ten); // gets() để dễ minh họa
return ten;
}
static char *tach_ho(char *ten)
{
int i = 0;
for (; i < strlen(ten); ++i)
{
if (ten[i] == ' ')
{
char *ho = (char *) malloc((i + 1) * sizeof(char));
memcpy((char *) ho, (char *) ten, i);
ho[i] = 0;
return ho;
}
}
return "?";
}
int main()
{
char *ten = nhap_ten();
char *ho = tach_ho(ten);
printf("ten = %s; ho = %s\n", ten, ho);
free(ten);
free(ho);
}
Chương trình đơn giản thì 1 lần malloc()
rồi free()
thôi, quản lý bộ nhớ là một thứ lằng nhằng.