#include <stdio.h>
int pd(Name signin)
{
FILE *fp1;
Name member;
int flag = 2;
fp1 = fopen("name.txt", "rt");
if (fp1 == NULL)
{
printf("\t输入无效,请按任意键返回注册!\n");
getch();
exit(1);
}
while (fscanf(fp1, "%s", member.name) != EOF)
{
if (strcmp(signin.name, member.name) == 0)
{
flag = 0;
break;
}
else if (strcmp(signin.name, member.name) != 0)
{
flag = 1;
continue;
}
}
if (flag == 0)
{
return 0;
}
else if (flag == 1)
{
return 1;
}
else if (flag == 2)
{
return 1;
}
}
void sign()
{
Name signin;
FILE *fp1;
fp1 = fopen("name.txt", "a+");
if (fp1 == NULL)
{
printf("打开失败,请按任意键退出!\n");
exit(1);
}
printf("\t请输入用户名:");
getchar();
gets(signin.name);
printf("\n");
if (pd(signin) == 0)
{
printf("\t对不起,您注册的用户名重复,请重新注册");
getch();
menu();
}
else if (pd(signin) == 1)
{
printf("\t请设置密码:");
gets(signin.pwd);
fputs(signin.name, fp1);
fputs(" ", fp1);
fputs(signin.pwd, fp1);
fputs("\n", fp1);
fclose(fp1);
printf("\t*****注册成功,按任意键返回*****");
getch();
menu();
}
}
void login()
{
Name log;
FILE *fp1;
int i;
int flag=0;
char ch[50],p[50];
fp1 = fopen("name.txt", "rt");
printf("\t请输入用户名:");
getchar();
gets(ch);
printf("\t请输入密码:");
for (i = 0;; i++)
{
p[i] = getch();
switch (p[i])
{
case '\b':
p[--i] = '\0';
i--;
printf("\b \b");
break;
case '\r':
p[i] = '\0';
putchar('\n');
break;
default:
putchar('*');
break;
}
if (p[i] == '\0') break;
}
while(fscanf(fp1,"%s %s",log.name,log.pwd)!=EOF)
{
if( strcmp(ch,log.name)==0&&strcmp(p,log.pwd)==0 )
{
flag=1;
break;
}
else if(strcmp(ch,log.name)==0&&strcmp(p,log.pwd)!=0)
{
flag=0;
break;
}
else if(strcmp(ch,log.name)!=0)
{
flag=2;
continue;
}
}
if(flag==1)
{
process();
sys_menu();
}
else if(flag ==0)
{
printf("\t密码出错!");
getch();
menu();
}
else if(flag ==2)
{
printf("\t您输入用户名不存在!");
getch();
menu();
}
}
具体什么问题,出不来什么结果,加点打印,看看哪一行出现的异常,可能判断不满足条件。