我把程序又换回函数调用,莫名其妙又好了!可能是我修改了一些小的位置吧。原来提示的是esp值出错!
这是我的代码,指导一下
#include<stdio.h>
void main()
{
void one();
void two(FILE *p);
FILE *mimazz;
if((mimazz=fopen("naijnewamim","rb"))==NULL)
one();
else
two(mimazz);
}
void one()
{
FILE *mimaz;
char mima[15];
char w;
int i=0;
printf("初始化密码\n");
printf("请输入最多10位字符或数字作为您的密码:\n");
back:gets(mima);
while(mima[i]!='\0')
i+=1;
if(i>10)
{
printf("输入错误,请重新输入:\n");
i=0;
goto back;
}
w=i+48;
if((mimaz=fopen("naijnewamim","wb"))==NULL)
printf("初始化失败,请重启软件\n");
fputc(w,mimaz);
if(fwrite(mima,i+1,1,mimaz)!=1)
printf("初始化失败,请重启软件\n");
fclose(mimaz);
printf("初始化软件完成\n");
}
void two(FILE *p)
{
int bijiao(char *bj,char *f);
char mima[11]={'a'};
char mimadb[15]={'a'};
char *dw;
char *dn;
char w;
int w1,j,i=0;
w=fgetc(p);
w1=w;w1=w1-48;
while(i<w1)
{
mima[i]=fgetc(p);
i+=1;
}
fclose(p);
dn=mima;
while(j!=2)
{
printf("请输入密码:\n");
gets(mimadb);
dw=mimadb;
j=bijiao(dw,dn);
}
}
int bijiao(char *bj,char *f)
{
int m=0,n=2;
char zj;
while((m<10)&&(*f!='\0'))
{
zj=(*f);
if(*bj!=zj)
{
n=3;
break;
}
bj+=1;
f+=1;
m+=1;
}
if(*bj!='\0')
n=3;
return(n);
}