关于输出就是按照输入的顺序依次将联系人输出
//输出通讯录列表
int Display()
{
ptcs p=head->next;
if(!p) //判断链表是否为空
{
printf("t该通讯录为空!n");
return 0;
}
printf("nt**********************************通讯录列表*************************************nn");
printf("t姓名t地址ttt手机号ttQQ号ttEmailn");
printf("t---------------------------------------------------------------------------------n");
while(p)
{
printf("t%-8s%-24s%-16s%-16s%-20sn",p->chat.name,p->chat.add,p->chat.tel,p->chat.tecent,p->chat.email);
p=p->next; //继续往后遍历输出
printf("t---------------------------------------------------------------------------------n");
}
return 0;
}
7、文件的写入与读出
通过新建一个文件并且指定文件的权限,将数据写入到指定文件中,以此实现对文件的整体写入操作。它的读出操作是通过访问已建立的文件,使用fgets函数获取文件中的信息并保存在指定的字符数组中,之后逐个进行输出。
//将数据写入文件
int fwrite()
{
ptcs p=head->next;
FILE* fp;
char filename[30];
if(!p)
{
printf("t该通讯录为空!");
return 0;
}
printf("t请输入所写入的文件名:");
scanf("t%s",filename);
if((fp=fopen(filename,"a+"))==NULL)
{
printf("t无法打开文件!n");
system("pause"); //暂停
return 0;
}
fprintf(fp,"**********************************通讯录列表*************************************nn");
fprintf(fp,"姓名t地址ttt手机号ttQQ号ttEmailn");
fprintf(fp,"---------------------------------------------------------------------------------n");
while(p)
{
fprintf(fp,"%-8s%-24s%-16s%-16s%-20sn",p->chat.name,p->chat.add,p->chat.tel,p->chat.tecent,p->chat.email);
p=p->next;
fprintf(fp,"---------------------------------------------------------------------------------n");
}
fprintf(fp,"n**********************************共%d个联系人************************************n",cacu(head->next));
fclose(fp); //关闭文件
printf("t写入成功!n");
return 0;
}
//读取文件
int fread()
{
char str[100];
char filename[30];
FILE* fp; //定义文件指针
printf("t请输入要读出的文件名:");
scanf("t%s",filename);
if((fp=fopen(filename,"a+"))==NULL)
{
printf("t无法打开文件!n");
system("pause");
return 0;
}
while((fgets(str,100,fp))!=NULL) //fgets获取文件中的信息 ,存入str中
{
printf("t%s",str); //输出文件中的信息
}
return 0;
}
8、模拟通话
通过调用time函数来获取随机数(从1970.1.1算起),根据当前系统时间,利用相关函数产生一个随机数的种子,再利用对应函数产生一个随机数,随后判断是否与通讯录中联系人的项数相符,若相符,则直接将该联系人的信息写入指定文件中,若不相符,则在该文件中写入未知联系人。










