#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "phoneNote.h"
PhoneNote *phoneNote_creat()
{
return (PhoneNote *)calloc(1,sizeof(PhoneNote));
// if(np==NULL){return np;}
// np->print=phoneNote_printw;
// np->write=phoneNote_Write;
}
void phoneNote_printw(PhoneNote *p)
{
printf("| name: %-16s",p->name);
printf("phone: %-14s",p->phone);
printf("age: %-4d",p->age);
printf("gender: %-3d",p->gender);
printf("addr: %-10s|\n",p->address);
}
int phoneNote_Write( PhoneNote *p,const char* name,const char* addr,
const char* phone,int age,int gender)
{
memset(p,0,sizeof(PhoneNote));
strncpy(p->name,name,strlen(name));
strncpy(p->address,addr,strlen(addr));
strncpy(p->phone,phone,strlen(phone));
p->gender=gender; p->age=age;
return 0;
}
PhoneNote* phoneNote_scanf()
{
printf("insert phoneNote data");
PhoneNote *rel=(PhoneNote *)calloc(1,sizeof(PhoneNote));
if(rel==NULL) return rel;
printf("Enter name:");scanf("%s",rel->name);
printf("Enter address:");scanf("%s",rel->address);
printf("Enter phone:");scanf("%s",rel->phone);
printf("Enter age:");scanf("%d",&(rel->age));
printf("Enter gender:");scanf("%d",&(rel->gender));
printf("Enter phoneNote data\n");
phoneNote_printw(rel);
printf("\n");
return rel;
}
int phoneNote_scanf_str(const char* caption, char* key,int size)
{ char buffer[100]={0};
printf("Enter %s:[%s] ",caption,key);scanf("%c",buffer); scanf("%[^\n]",buffer);
if(buffer[0]>0x30)
{strncpy(key,buffer,size-1);}
}
int phoneNote_scanf_int(const char* caption,int key)
{ char buffer[64]={0};
printf("Enter %s:[%d] ",caption,key);scanf("%c",buffer); scanf("%[^\n]",buffer);
if(buffer[0]>=0x30 && buffer[0]<=0x39 ){key=atoi(buffer);}
}
int phoneNote_modify(PhoneNote *p)
{
if (p==NULL){return -1;}
printf("modify phoneNote data\n");
phoneNote_scanf_str("name",p->name,32);
phoneNote_scanf_str("address",p->address,128);
phoneNote_scanf_str("phone",p->phone,16);
phoneNote_scanf_int("age",p->age);
phoneNote_scanf_int("gender",p->gender);
return 0;
}
PhoneNote *phoneNote_search(PhoneNote *p, const char *key, const char *value)
{
if(strcasecmp("name",key)==0 && strstr(p->name,value)!=NULL)return p;
if(strcasecmp("address",key)==0 && strstr(p->address,value)!=NULL)return p;
if(strcasecmp("phone",key)==0 && strstr(p->phone,value)!=NULL)return p;
if(strcasecmp("age",key)==0 && p->age==atoi(value) )return p;
if(strcasecmp("gender",key)==0 && p->gender==atoi(value))return p;
return NULL;
}
int phoneNote_swap(PhoneNote *p1,PhoneNote* p2)
{ PhoneNote* tmp=NULL;
if(p1==NULL || p2==NULL){return -1;}
if((tmp=phoneNote_creat())==NULL){return -2;}
memcpy(tmp,p1,sizeof(PhoneNote));
memcpy(p1,p2,sizeof(PhoneNote));
memcpy(p2,tmp,sizeof(PhoneNote));
if(tmp!=NULL)free(tmp);
return 0;
}
int phoneNote_cmp(PhoneNote *p1,PhoneNote* p2, const char* key)
{
if(strcasecmp("name",key)==0) {return strcmp(p1->name,p2->name);}
if(strcasecmp("address",key)==0 ) {return strcmp(p1->address,p2->address);}
if(strcasecmp("phone",key)==0 ) {return strcmp(p1->phone,p2->phone);}
if(strcasecmp("age",key)==0 ) {return p1->age>p2->age?1:0;}
if(strcasecmp("gender",key)==0) {return p1->gender>p2->gender?1:0;}
return 0;
}
int phoneNote_main(int argc, char const *argv[])
{
PhoneNote *tb=phoneNote_creat();
phoneNote_Write(tb,"anyang","henan","0372",70,0);
phoneNote_printw(tb);
return 0;
}
数据结构--元素操作(phoneNote.c)
最新推荐文章于 2024-07-25 21:11:40 发布