#include<stdio.h>
struct person
{
char name[8];
char tel[15];
char addr[50];
};
char filename[20]="E:\\txl.txt";
FILE *fp;
void creat();
void output();
void search();
void append();
void modify();
void delete();
main( )
{
int m;
creat();
while(1)
{
printf("\n\t\t*********欢è¿ä½¿ç¨é讯å½ä¿¡æ¯ç®¡çç³»ç»*********\n\n");
printf("\n\t\tæ·»å ï¼è¯·æ1");
printf("\n\t\tæ¥æ¾ï¼è¯·æ2");
printf("\n\t\tä¿®æ¹ï¼è¯·æ3");
printf("\n\t\tå é¤ï¼è¯·æ4");
printf("\n\t\tè¾åºï¼è¯·æ5");
printf("\n\t\téåºï¼è¯·æ0\n");
printf("\n\t\t********************************************\n\n");
printf("Please select(0--5):");
scanf("%d",&m);
if(m>=0&&m<=5)
{
switch(m)
{
case 1: append();
break;
case 2: search();
break;
case 3: modify();
break;
case 4: delete();
break;
case 5: output();
break;
case 0: exit();
}
printf("\n\næä½å®æ¯ï¼è¯·å次éæ©ï¼");
}
else
printf("\n\néæ©é误ï¼è¯·å次éæ©ï¼");
}
}
/*è¾å
¥æ¨¡åcreat( )ï¼ å建é讯å½çåå½æ°ã*/
void creat()
{
struct person one;
long s1;
/*printf("\n请è¾å
¥é讯å½æ件åï¼");
scanf("%s",filename); */
if((fp=fopen(filename,"at+"))==NULL)
{
printf("\nä¸è½å»ºç«é讯å½ï¼");
exit();
}
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);
}
/*è¾åºæ¨¡åoutput( )ï¼è¾åºé讯å½ä¸è系人é讯信æ¯çåå½æ°*/
void output()
{
struct person one;
if((fp=fopen(filename,"r"))==NULL)
{
printf("\nä¸è½æå¼é讯å½ï¼");
exit();
}
printf("\n\n%20s\n","é 讯 å½");
while(!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);
}
/*æ·»å 模åappend( )ï¼åé讯å½ä¸æ·»å æ人é讯信æ¯çåå½æ°*/
void append()
{
struct person one;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\nä¸è½æå¼é讯å½ï¼");
exit();
}
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);
}
/*æ¥æ¾æ¨¡åsearch( )ï¼å¨é讯å½ä¸æ¥æ¾æ人é讯信æ¯çåå½æ°*/
void search()
{
int k=0;
char namekey[8];
struct person one;
printf("\n请è¾å
¥å§å:");
scanf("%s",namekey);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\nä¸è½æå¼é讯å½ï¼");
exit();
}
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
printf("\n\nå·²æ¥å°ï¼è®°å½ä¸ºï¼");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
k=1;
}
}
if(!k)
printf("\n\n对ä¸èµ·ï¼é讯簿ä¸æ²¡ææ¤äººçè®°å½ã");
fclose(fp);
}
/*ä¿®æ¹æ¨¡åmodify( )ï¼å¨é讯å½ä¸ä¿®æ¹æ人é讯信æ¯çåå½æ°*/
void modify()
{
int m,k=0;
long offset;
char namekey[8];
struct person one;
printf("\n请è¾å
¥å§å:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\nä¸è½æå¼é讯å½ï¼");
exit();
}
while(!feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(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);
}
else
printf("\n对ä¸èµ·ï¼é讯å½ä¸æ²¡ææ¤äººçè®°å½ã");
fclose(fp);
}
/*å é¤æ¨¡ådelete( )ï¼å¨é讯å½ä¸å é¤æ人é讯信æ¯çåå½æ°*/
void delete()
{
int m,k=0,flag;
long offset1,offset2;
char namekey[8], valid[4];
struct person one;
printf("\n请è¾å
¥å§å:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\nä¸è½æå¼é讯å½ï¼");
exit();
}
while(!feof(fp))
{
offset1=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
k=1;
break;
if(k)
{
printf("\nå·²æ¥å°ï¼è®°å½ä¸º");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\nç¡®å®è¦å é¤,æ1ï¼ä¸å é¤ï¼æ0ï¼");
scanf("%d",&m);
if(m)
{
fseek(fp,offset1,SEEK_SET);
fprintf(fp,"%-10s%-20s%-50s\n","","","");
}
else
printf("\n对ä¸èµ·ï¼é讯å½ä¸æ²¡ææ¤äººçè®°å½ã");
fclose(fp);
}
}
}
}
温馨提示:答案为网友推荐,仅供参考