看不懂哪里错了……希望有个大神指点一下 ps本人对C语言一窍不通
源代码如下
#include
#include
#include
#include
int i=0;
struct system
{
char author[20];
char singer[20];
char time[20];
char name[20];
} dan[100];
void enter()
{
int j;
char c[2];
FILE *fp;
if((fp=fopen("data.txt","w"))==NULL)
{
printf("Can not open the file!\n");
exit(0);
}
for(j=0;j<i;j++)
{
fwrite(&dan[j],sizeof(struct system),1,fp);
}
while(1)
{
printf("Please input the author:\n");
scanf("%s",dan[i].author);
printf("Please input the song's name:\n");
scanf("%s",dan[i].name);
printf("Please input the singer:\n");
scanf("%s",dan[i].singer);
printf("Please input the outday:\n");
scanf("%s",dan[i].time);
if(fwrite(&dan[i++],sizeof(struct system),1,fp)!=1)
printf("File write error\n");
else printf("Successful!\n");
printf("Is there any more?( Yes[y]/No[n]) \n");
scanf("%s",c);
if(strcmp(c,"n")==0)break;
}
fclose(fp);
}
void delete()
{
int j,v,c;
char w[20];
FILE *fp;
printf("Please input the song'name which you want to delete:");
scanf("%s",w);
fp=fopen("data.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&dan[j],sizeof(struct system),1,fp)!=1) break;
}
v=j;
for(j=0;j<v;j++)
{
if(strcmp(w,dan[j].name)==0)
c=j;
}
fclose(fp);
fp=fopen("data.txt","wb");
for(j=0;j<v;j++)
{
if(j!=c)
fwrite(&dan[j],sizeof(struct system),1,fp);
}
fclose(fp);
printf("Delete OK!\n");
i--;
}
void browse()
{
int j;
FILE *fp;
fp=fopen("data.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&dan[j],sizeof(struct system),1,fp)==1)
{
printf("Name:%s\n",dan[j].name);
printf("Author:%s\n",dan[j].author);
printf("Singer:%s\n",dan[j].singer);
printf("Outday:%s\n",dan[j].time);
printf("---------------------------------\n");
}
else break;
}
fclose(fp);
}
void search()
{
int flag,j,x;
char w[20];
FILE *fp;
char v[20];
printf("(1)By author\n");
printf("(2)By singer\n");
printf("(3)By name\n");
printf("Please choose which you want to search:\n");
scanf("%d",&x);
if(x==3)
{
flag=0;
printf("Please input the song's name:");
scanf("%s",&w);
fp=fopen("data.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&dan[j],sizeof(struct system),1,fp)!=1) break;
if(strcmp(dan[j].name,w)==0)
{
printf("Name:%s\n",dan[j].name);
printf("Author:%s\n",dan[j].author);
printf("Singer:%s\n",dan[j].singer);
printf("Outday:%s\n",dan[j].time);
printf("---------------------------------\n");
flag=1;
}
}
if(flag==0)
printf("Cannot find the song!\n");
fclose(fp);
}
else if(x==2)
{
flag=0;
printf("Please input the singer:");
scanf("%s",&v);
fp=fopen("data.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&dan[j],sizeof(struct system),1,fp)!=1) break;
if(strcmp(dan[j].singer,v)==0)
{
printf("Name:%s\n",dan[j].name);
printf("Author:%s\n",dan[j].author);
printf("Singer:%s\n",dan[j].singer);
printf("Outday:%s\n",dan[j].time);
printf("---------------------------------\n");
flag=1;
}
}
if(flag==0)
printf("Cannot find the song!\n");
fclose(fp);
}
else if(x==1)
{
flag=0;
printf("Please input the author:");
scanf("%s",w);
fp=fopen("data.txt","rb");
for(j=0;j<100;j++)
{
if(fread(&dan[j],sizeof(struct system),1,fp)!=1) break;
if(strcmp(dan[j].author,w)==0)
{
printf("Name:%s\n",dan[j].name);
printf("Author:%s\n",dan[j].author);
printf("Singer:%s\n",dan[j].singer);
printf("Outday:%s\n",dan[j].time);
printf("---------------------------------\n");
flag=1;
}
}
if(flag==0)
printf("Cannot find the song!\n");
fclose(fp);
}
else printf("Error!\n");
}
main()
{
int a;
while(1)
{
printf("\t\tWelcome to the song'system!------by flea\n");
printf("\t\t******************^o^ MENU ^o^*******************\n\n");
printf("\t\t\t(1).Enter\n");
printf("\t\t\t(2).Delete\n");
printf("\t\t\t(3).Browse\n");
printf("\t\t\t(4).Search\n");
printf("\t\t\t(0).exit\n");
printf("\t\t*************************************************\n");
printf("\n\t\t\tPlease choose the number(0-4):");
scanf("%d",&a);
if(a==0) break;
switch(a)
{
case 1:enter();break;
case 2:delete();break;
case 3:browse();break;
case 4:search();break;
}
}
}
请使用这个来插入代码。。。 发帖状态栏 </> 使用这个来发帖。。