C写的通讯录,将数据写下文件时多了点东西,从文件读出时出错,求指教
C写的通讯录,将数据写入文件时多了点东西,从文件读出时出错,求指教
/*班级通讯录管理系统
以本班同学的具体数据为背景,设计实现一个本班同学通讯录管理系统,实现以下功能:
1) 通讯录编辑(添加、删除);
2) 按不同的项进行查找;
3) 对已存在的通讯录按不同的项排序;
4) 将通讯录写入文件;
5) 从文件读入通讯录。
备注:通讯录至少应该有以下数据项:姓名,地址,电话,邮编,E-mail。
希望前辈们多多指导,多多提携,让小子在编程的这条路上走的更远,不胜感激!
如果前辈能提供一些您的小程序供我们学习,那最好不过,呵呵...
*/
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50
typedef struct { //定义结构体
char name[20];
char address[20];
char tel[12];
char youbian[8];
char Email[32];
}Node;
typedef struct { //静态链表
Node *elem;
int length;
int listsize;
}Sqlist;
void InitSqlist(Sqlist *L){ //初始化
L->elem=(Node *)malloc(MaxSize*sizeof(Node));
if(!L->elem) exit(0);
L->length=0;
L->listsize=MaxSize;
}
void InsertElem(Sqlist *L){ //添加成员
Node *base;
int n;
n=L->length;
if(L->length>=L->listsize) {
base=(Node *)realloc(L->elem,(L->listsize+10)*sizeof(Node));
L->elem=base;
(L->listsize)+=10;
}
printf("please input %dth data: ",n+1);
printf("\n name : ");
scanf("%s",L->elem[n].name);
printf("\n address: ");
scanf("%s",L->elem[n].address);
printf("\n tel : ");
scanf("%s",L->elem[n].tel);
printf("\n youbian: ");
scanf("%s",L->elem[n].youbian);
printf("\n Email : ");
scanf("%s",L->elem[n].Email);
/*
printf("please input %dth data: ",n+1);
printf("\n name : ");
gets(L->elem[n].name); //如果只写一行 直接就跳过去了,为什么?
gets(L->elem[n].name);
printf("\n address: ");
gets(L->elem[n].address);
printf("\n tel : ");