printf("\t如果按了一次回车没有反应,那就在按一次,\n");
printf("------------------------------------------------------------------\n");
printf("\t在输入文件地址的时候要输入绝对地址\n");
printf("------------------------------------------------------------------\n");
printf("\t在win7下要在C盘写文件需要用管理员权限.\n");
printf("------------------------------------------------------------------\n");
printf("\t");
getch();
}
void Import(Node p)
{
printf("\t警告:此操作将使用文件中的数据覆盖此时内存中的缓存数据!!\n");
char ch;
printf("\n");
printf("\t是否替换!(y/n)\n");
fflush(stdin);
printf("\t");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
p->Num=0;
FILE * a1;
char lujing[100];
printf("\t输入要导入文件的路径!\n");
fflush(stdin);
printf("\t");
gets(lujing);
a1=fopen(lujing,"rb");
if(a1==NULL)
{
printf("\t打开文件失败,导入数据失败!\n");
return ;
}
Node q=p;
while(!feof(a1))
{
p->Num++;
Node NEW =new struct L;
fscanf(a1,"%s%lld%f%f",NEW->Name,&NEW->Num,&NEW->English,&NEW->C_language);
q->Next=NEW;
NEW->Next=NULL;
q=q->Next;
}
p->Num--;
printf("\t操作成功!\n");
fclose(a1);
getch();
return ;
}
else if(ch=='n'||ch=='N')
{
printf("\t操作被取消!\n");
getch();
return ;
}
else
{
printf("\t输入有误!\n");
getch();
return ;
}
}
void Export(Node p)
{
printf("\t警告:此操作将覆盖源文件中的数据!!\n");
char ch;
printf("\n");
printf("\t是否替换!(y/n)\n");
fflush(stdin);
printf("\t");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
FILE * a1;
char lujing[100];
printf("\t输入要导出文件的路径!\n");
fflush(stdin);
printf("\t");
gets(lujing);
a1=fopen(lujing,"wb");
if(a1==NULL)
{
printf("\t打开文件失败,导出数据失败!\n");
return ;
}
int len=p->Num;
for(int i=0;i
p=p->Next;
fprintf(a1,"%s %lld %.2f %.2f\n",p->Name,p->Num,p->English,p->C_language);
}
printf("\t操作成功!\n");
fclose(a1);
getch();
return ;
}
else if(ch=='n'||ch=='N')
{
printf("\t操作被取消!\n");
getch();
return ;
}
else
{
printf("\t输入有误!\n");
getch();
return ;
}
}
原先为了解决那个输入错误问题,想了很多方法,近期看一个C函数手册发现scanf函数。。。。。。解决了!!其实scanf函数是有返回值的,
函数原型:int scanf(char *format[,argument,...]);
如果输入有误则返回0;否则返回输入数据的个数,利用这点就可以解决IO异常;
以前听一个老师讲java异常的时候他说这类异常是C语言力所不能及的!!
现在才发现C语言的博大精深,很多很多不知道的C语言秘密,