# include & ltstring.h & gt
結構人
{
char name[8];
char聯系電話[15];
char addr[50];
};
字符文件名[20];
FILE * fp
void creat();
void輸出();
void search();
void append();
void modify();
void deleted();
int main()
{
int m;
creat();
while(1)
{
printf(" \ n \ n要添加,請按1 ");
printf(" \ n要查找,請按2 ");
printf(" \ n要修改,請按3 ");
printf(" \ n刪除,請按4 ");
printf(" \ n要輸出,請按5 ");
printf(" \ n要退出,請按0 \ n ");
scanf("%d ",& ampm);
如果(m & gt= 0 & amp& ampm & lt=5)
{
開關(m)
{
案例1:append();
打破;
案例二:搜索();
打破;
情況三:modify();
打破;
情況四:刪除();
打破;
案例五:output();
打破;
案例0:破;
}
printf(" \ n \ n操作完成,請重新選擇!");
}
其他
printf(" \ n \ n選擇錯誤,請重新選擇!");
}
返回0;}
void creat()
{
結構人壹;
long s 1;
printf(" \ n請輸入通訊簿名稱:");
scanf("%s ",文件名);
if((fp=fopen(文件名,“w”))= = NULL)
{
printf(" \ n無法創建通訊簿!");
}
Fprintf (FP," %-10s%-20s%-50s \ n ","姓名","電話號碼","地址");
printf(" \ n請輸入您的姓名、電話號碼和地址(以0結尾)\ n ");
scanf("%s ",one . name);
while(strcmp(one.name," 0 "))
{
scanf("%s%s ",one.tel,one . addr);
fprintf(fp," %-10s%-20s%-50s\n ",one.name,one.tel,one . addr);
scanf("%s ",one . name);
}
fclose(FP);
}
無效輸出()
{
結構人壹;
if((fp=fopen(filename," r))= = NULL)
{
printf(" \ n無法打開通訊簿!");
}
Printf("\n\n%20s\n ","通訊簿");
而(!feof(fp))
{
fscanf(fp," %s%s%s\n ",one.name,one.tel,one . addr);
printf("%-10s%-20s%-50s ",one.name,one.tel,one . addr);
}
fclose(FP);
}
void追加()
{
結構人壹;
if((fp=fopen(文件名,“a”))= = NULL)
{
printf(" \ n無法打開通訊簿!");
}
printf(" \ n請輸入添加的姓名、電話號碼和地址\ n ");
scanf("%s%s%s ",one.name,one.tel,one . addr);
fprintf(fp," %-10s%-20s%-50s\n ",one.name,one.tel,one . addr);
fclose(FP);
}
無效搜索()
{
int k = 0;
char name key[8];
結構人壹;
printf(" \ n請輸入壹個名稱:");
scanf("%s ",name key);
if((fp=fopen(文件名,“Rb”))= = NULL)
{
printf(" \ n無法打開通訊簿!");
}
而(!feof(fp))
{
fscanf(fp," %s%s%s\n ",one.name,one.tel,one . addr);
如果(!strcmp(namekey,one.name))
{
printf(" \ n \ n找到,記錄為:");
printf(" \ n %-10s %-18s %-50s ",one.name,one.tel,one . addr);
k = 1;
}
}
如果(!k)
printf(" \ n \ n抱歉,通訊簿中沒有此人的記錄。);
fclose(FP);
}
void修改()
{
int m,k = 0;
長偏移;
char name key[8];
結構人壹;
printf(" \ n請輸入壹個名稱:");
scanf("%s ",name key);
if((fp=fopen(filename," r+")= = NULL)
{
printf(" \ n無法打開通訊簿!");
}
而(!feof(fp))
{
offset = ftell(FP);
fscanf(fp," %s%s%s\n ",one.name,one.tel,one . addr);
如果(!strcmp(namekey,one.name))
{
k = 1;
打破;
}
}
如果(k)
{
printf(" \ n找到,記錄為:");
printf(" \ n %-10s %-18s %-50s ",one.name,one.tel,one . addr);
printf(" \ n請輸入新的姓名、電話號碼和地址:");
scanf("%s%s%s ",one.name,one.tel,one . addr);
fseek(fp,offset,SEEK _ SET);
printf("%ld ",ftell(FP));
fprintf(fp," %-10s%-20s%-50s\n ",one.name,one.tel,one . addr);
}
其他
printf(" \ n抱歉,通訊簿中沒有此人的記錄。);
fclose(FP);
}
void已刪除()
{
int m,k=0,flag
長offset1,offset2
char namekey[8],valid[4];
結構人壹;
printf(" \ n請輸入壹個名稱:");
scanf("%s ",name key);
if((fp=fopen(filename," r+")= = NULL)
{
printf(" \ n無法打開通訊簿!");
}
而(!feof(fp))
{
offset 1 = ftell(FP);
fscanf(fp," %s%s%s\n ",one.name,one.tel,one . addr);
如果(!strcmp(namekey,one.name))
{
k = 1;
打破;
}
}
如果(k)
{
Printf ("\ nFound,recorded as ");
printf(" \ n %-10s %-18s %-50s ",one.name,one.tel,one . addr);
printf(" \ n確實要刪除嗎,請按1;不刪除,按0:“);
scanf("%d ",& ampm);
如果(m)
{
fseek(fp,offset1,SEEK _ SET);
fprintf(fp," %-10s%-20s%-50s\n ","",""," ");
}
}
其他
printf(" \ n抱歉,通訊簿中沒有此人的記錄。);
fclose(FP);
}
可以在vc6.0中使用,希望對妳有用。