//C primer plus
//結構中使用指標
//給結構中指標分配記憶體空間
//free釋放掉之前分配的記憶體空間
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "tsong.h"
struct namect{
char * fname;
char * lname;
int letters;
};
void getinfo(struct namect *); //輸入姓名
void makeinfo(struct namect *); //計算長度
void showinfo(const struct namect *); //列印結構中的資訊
void cleanup(struct namect *); //釋放記憶體
int main(){
struct namect person;
getinfo(&person) ;
makeinfo(&person);
showinfo(&person);
cleanup(&person);
return 0;
}
void getinfo(struct namect *pst)
{
char temp[81];
puts("please enter your first name");
gets(temp);
pst->fname=(char *)malloc(strlen(temp)+1);
strcpy(pst->fname,temp);
puts("please enter your last name");
gets(temp);
pst->lname=(char *)malloc(strlen(temp)+1);
strcpy(pst->lname,temp);
}
void makeinfo(struct namect *pst)
{
pst->letters=strlen(pst->fname)+strlen(pst->lname);
}
void showinfo(const struct namect *pst)
{
printf("%s %s ,your name contains %d letters\n",pst->fname,pst->lname,pst->letters);
}
void cleanup(struct namect *pst)
{
free(pst->fname);
free(pst->lname);
}