Dùng con trỏ để tách họ, chữ lót và tên

lÀM SAO ĐỂ CẤP PHÁT ĐỘNG CHO CON TRỎ MÀ KHÔNG BIẾT ĐƯỢC SỐ PHẦN TỬ CHO TRƯỚC(NHẬP TÊN)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <malloc.h>
int t1,t2;
int i;

void xacDinh(char *name)
{
	for (i=0;i<strlen(name);i++)
		if(name[i]==' ')
		{
			t1=i;
			break;
		}
	for (i=strlen(name)-1;i>=0;i--)
		if(name[i]==' ')
		{
			t2=i;
			break;
		}
}
void ho(char *name)
{
    for(i=0;i<t1;i++)
        printf("%c",name[i]);
    printf("\n");
}
void lot(char *name)
{
    for(i=t1+1;i<t2;i++)
        printf("%c",name[i]);
    printf("\n");
}
void ten(char *name)
{
    int i;
    for(i=t2+1;i<strlen(name);i++)
        printf("%c",name[i]);
}

void main()
{
    char *name;
    printf("Nhap ho va ten cua ban:");
    gets(name);
    name = (char *)malloc(name*sizeof(char));
    xacDinh(name);
    printf("Ho cua ban la:");
    ho(name);
    printf("Chu lot cua ban la:");
    lot(name);
    printf("Ten cua ban la:");
    ten(name);
    free(name);
    getch();
}

Cái chỗ name*sizeof em không biết thay name bằng cái gì

Cái này theo mình có 2 cách: trong C và C++

  • sử dụng bắt phím bằng getch() rồi dùng relloc resize mỗi khi có phím nhập vào.
  • sử dụng bắt phím bằng getch() rồi dùng 2 con trỏ. 1con để lưu trữ 1 con để new dữ liệu mới do k hỗ trợ resize . qua mỗi lần vòng lặp bắt phím thì 2 con trỏ này lại đổi chỗ.

Viết thuần C thi thớt cứ gọi realloc :smiley: nói thế chứ có hàm ngăn tràn đấy, và không có đuôi _s.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?