今天的2018的最后一天,没出去跨年,为什么呢,因为我昨天突然有个好想法,想做一个可以注册,登陆,修改密码的系统。有了个大致思路,所以就开始写,首先就写了一个测试,但一编译,居然打不开文件。我很懵逼。想去改,但突然部门的人要借电脑,所以借了。今天中午才拿过来,看了一下午,总是编译不过,打不开提前设置好的文件。但就在刚才,我总算发现了这个错误。很小。具体看下面这图。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
int i;
char name[32],password[64],name_tmp[32],password_tmp[64];
FILE *A;
char shuju[64];
char *B;
A = fopen("ni.txt", "r");
if (!A) { //等效于 file == NULL
printf("文件打开失败");
return 1;
}
/*A=fopen("ni.txt", "r");
if(!A); //这个错误就是这个,我在括号后面加了一个;
{
printf("文件夹打开失败!!!\n");
return 1;
}*/
for(i=0;i<3;i++)
{
printf("请输入你的用户名:");
scanf("%s",&name);
printf("请输入你的密码:");
scanf("%s",&password);
while(1)
{
B=fgets(shuju,sizeof(shuju),A);
if(!B)
{break;}
sscanf(shuju,"%s%s",name_tmp,password_tmp);
if(!strcmp(name,name_tmp) && !strcmp(password,password_tmp))
{break;}
}
if(shuju)
{system("cls");
printf("----交换机登陆系统----\n1.资料管理\n2.修改密码\n3.IP地址管理\n4.退出\n");
break;
}
else if(i<=2)
{system("cls");
printf("输入次数已到!!\n");
break;
}
else
{system("cls");
printf("用户名或密码错误!请重新输入!\n");
fseek(A, 0, SEEK_SET);
}
}
return 0;
}
改了后虽然编译通过了,但发现循环好像有点问题,所以还是得找,继续努力了。我会持续更新这篇博客,直到我将整个系统做出来。
循环的错误刚才解决了,原因还是粗心,写错判断语句,错误具体如下图
if(B) //循环错误的地方,这里该判断的是 函数B,而不是判断函数shuju.
{system("cls");
printf("----交换机登陆系统----\n1.资料管理\n2.修改密码\n3.IP地址管理\n4.退出\n");
break;
}