#define _CRT_SECURE_NO_WARNINGS //排除部分警告干扰
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#include<conio.h>
#include<string.h>
#include<windows.h>
#include<stdbool.h>
#include<stdint.h>
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#include<conio.h>
#include<string.h>
#include<windows.h>
#include<stdbool.h>
#include<stdint.h>
typedef struct goods //定义一个结构体,即节点
{
void *datar; //加了datar
char name[50], grade, num[15];
int date;
float money;
struct goods * next;
}Goo, *NodePtr, *GoodsInfoPtr;//加了一个 *GoodsInfoPtr
{
void *datar; //加了datar
char name[50], grade, num[15];
int date;
float money;
struct goods * next;
}Goo, *NodePtr, *GoodsInfoPtr;//加了一个 *GoodsInfoPtr
struct info
{
char account[30];
char user[100];
long dsit;
long pw;
struct info *xiage;
};
{
char account[30];
char user[100];
long dsit;
long pw;
struct info *xiage;
};
int main();
void regist1();
int judgePW(long ps);
int userInfoSave(char *u, char *p);
int search(char *s, int psw);
int searchAC(char *s);
int readfile();
void login();
void regist();
int menu();
int n = 0;
int textFile(NodePtr goods);
int userCheck(char *s, char *p);//**读取D盘user.txt文件,检测用户是否存在 不存在返回1,存在返回0
int userInfoSave(char *u, char *p);//**写入文件 将注册用户信息添加到D盘user.txt文件
struct info *pt, *header = NULL, *tail, *p0;
typedef bool (COMPTR)(const void*, const void*);
void regist1();
int judgePW(long ps);
int userInfoSave(char *u, char *p);
int search(char *s, int psw);
int searchAC(char *s);
int readfile();
void login();
void regist();
int menu();
int n = 0;
int textFile(NodePtr goods);
int userCheck(char *s, char *p);//**读取D盘user.txt文件,检测用户是否存在 不存在返回1,存在返回0
int userInfoSave(char *u, char *p);//**写入文件 将注册用户信息添加到D盘user.txt文件
struct info *pt, *header = NULL, *tail, *p0;
typedef bool (COMPTR)(const void*, const void*);
Goo * InitList(Goo * head) //把信息存入首节点
{
strcpy(head->name, "示例:花盆");
strcpy(head->num, "xxxxxxxxxxxx");
head->grade = 'A';
head->date = 2000;
head->money = 0.00;
head->next = NULL;
return head;
}
{
strcpy(head->name, "示例:花盆");
strcpy(head->num, "xxxxxxxxxxxx");
head->grade = 'A';
head->date = 2000;
head->money = 0.00;
head->next = NULL;
return head;
}
void view(Goo* head) /*遍历链表,输出数据*/
{
Goo * p;
p = head;
while (p != NULL)
{
printf("%-15s%-15s%3c%9d%9.2f\n", p->name, p->num, p->grade, p->date, p->money);//把d改成了f
p = p->next;
}
}
{
Goo * p;
p = head;
while (p != NULL)
{
printf("%-15s%-15s%3c%9d%9.2f\n", p->name, p->num, p->grade, p->date, p->money);//把d改成了f
p = p->next;
}
}
Goo * Search1(Goo* head, char * name) /*通过名称查找货物*/
{
Goo * p = head;
while (p && strcmp(p->name, name))
p = p->next;
return p;
}
{
Goo * p = head;
while (p && strcmp(p->name, name))
p = p->next;
return p;
}
Goo * Search2(Goo* head, char * num) /*通过货号查找货物*/
{
Goo * p = head;
while (p && strcmp(p->num, num))
p = p->next;
return p;
}
{
Goo * p = head;
while (p && strcmp(p->num, num))
p = p->next;
return p;
}
void Delete(Goo* head, char * i) /*删除货物信息*/
{
Goo * p = head, *m, *q;
while (p && strcmp(p->num, i) != 0)
{
q = p; //q = p; //如果不进行指针转换的话,那么删除指令只能删除本来输入到面板上的信息,而不能删除新增的信息
//p = p;//新加一句 //要是像目前这样改掉呢,则是可以删原有的和新增的,但是不能删第一条
p = p->next;//p = p->next;
}
{
Goo * p = head, *m, *q;
while (p && strcmp(p->num, i) != 0)
{
q = p; //q = p; //如果不进行指针转换的话,那么删除指令只能删除本来输入到面板上的信息,而不能删除新增的信息
//p = p;//新加一句 //要是像目前这样改掉呢,则是可以删原有的和新增的,但是不能删第一条
p = p->next;//p = p->next;
}
if ((q != NULL) && (q->next != NULL) && head != NULL)
{
m = q->next;
q->next = m->next;
free(m);
printf("Delete success!\n");
Sleep(1000);
}
{
m = q->next;
q->next = m->next;
free(m);
printf("Delete success!\n");
Sleep(1000);
}
else
printf("The goods does not exist!\n");
Sleep(3000);
}
printf("The goods does not exist!\n");
Sleep(3000);
}
void AddHead(Goo* head, char name[50], char num[15], char grade, int date, float money) //*增加货物信息,把int改成float之后在显示上出了点问题
{
Goo * p, *q = head;
while (q->next != NULL)
{
q = q->next;
}
p = (Goo*)malloc(sizeof(Goo));
strcpy(p->name, name);
strcpy(p->num, num);
p->grade = grade;
p->date = date;
p->money = money;
p->next = NULL;
q->next = p;
}
{
Goo * p, *q = head;
while (q->next != NULL)
{
q = q->next;
}
p = (Goo*)malloc(sizeof(Goo));
strcpy(p->name, name);
strcpy(p->num, num);
p->grade = grade;
p->date = date;
p->money = money;
p->next = NULL;
q->next = p;
}
//里函数
int menu()
{
int i, j, f;
float g;
Goo * head, *s;
char a[50], b[50], t, e[15], h[15], k[15];
system("cls");
head = (Goo*)malloc(sizeof(Goo));
head = InitList(head);
for (j = 0;; j++)
{
printf("-----------------------------------------------------\n");
printf("NAME NUMBER GRADE DATE MONEY\n");//把weight改成了money
int menu()
{
int i, j, f;
float g;
Goo * head, *s;
char a[50], b[50], t, e[15], h[15], k[15];
system("cls");
head = (Goo*)malloc(sizeof(Goo));
head = InitList(head);
for (j = 0;; j++)
{
printf("-----------------------------------------------------\n");
printf("NAME NUMBER GRADE DATE MONEY\n");//把weight改成了money
view(head);
printf("-----------------------------------------------------\n");
printf("******************请好好注意以下选项*****************\n");
printf("* *\n");
printf("* 1.增加货物信息 *\n");
printf("* 2.删除货物信息 *\n");
printf("* 3.通过货品名称查找货物 *\n");
printf("* 4.通过货号查找货品名称 *\n");
printf("* 5.刷新更改某一货物信息 *\n");
printf("* 6.写入后台文档 *\n");
printf("* 7.修改登录信息 *\n");
printf("* 8.从后台文档将货品信息读到控制面板 *\n");
printf("* 9.退出 *\n");
printf("* *\n");
printf("****************please make a choice:****************\n");
printf("******************请好好注意以下选项*****************\n");
printf("* *\n");
printf("* 1.增加货物信息 *\n");
printf("* 2.删除货物信息 *\n");
printf("* 3.通过货品名称查找货物 *\n");
printf("* 4.通过货号查找货品名称 *\n");
printf("* 5.刷新更改某一货物信息 *\n");
printf("* 6.写入后台文档 *\n");
printf("* 7.修改登录信息 *\n");
printf("* 8.从后台文档将货品信息读到控制面板 *\n");
printf("* 9.退出 *\n");
printf("* *\n");
printf("****************please make a choice:****************\n");
scanf("%d", &i);
switch (i)
{
case 1:
{
printf("please insert the goods' information:");
printf("\nName :");
scanf("%s", a);
printf("Number :");
scanf("%s", e);
printf("grade :");
getchar();
scanf("%c", &t);
printf("Date :");
scanf("%d", &f);
printf("Money :");
scanf("%f", &g);
AddHead(head, a, e, t, f, g);
system("cls");
break;
}
case 2:
{
printf("\nNumber:");
scanf("%s", h);
Delete(head, h);
system("cls");
break;
}
case 3:
{
printf("please input the goods' name: ");
scanf("%s", b);
s = Search1(head, b);
system("cls");
printf("%-15s%-15s%3c%9d%9.2f\n", s->name, s->num, s->grade, s->date, s->money);
break;
}
case 4:
{
printf("please input the goods' number: ");
scanf("%s", k);
s = Search2(head, k);
system("cls");
printf("%-15s%-15s%3c%9d%9.2f\n", s->name, s->num, s->grade, s->date, s->money);
break;
}
case 5:
{
printf("please input the the goods' number:");
scanf("%s", k);
s = Search2(head, k);
printf("input grade:");
getchar();
scanf("%c", &t);
s->grade = t;
printf("input name:");
getchar();
gets_s(s->name);//在vs2015中,考虑到安全性,用gets_s代替了gets
printf("input Date: ");
scanf("%d", &f);
s->date = f;
printf("input money:");
scanf("%9f", &g);
s->money = g;
view(head->next);
system("cls");
break;//后加的break
}
case 6:
{
textFile(head);
Sleep(2000);
printf("写入完成!\n");
Sleep(2000);
system("cls");
break;//后加的break
}
case 7:
{
system("cls");
regist1();
Sleep(2000);
printf("更改成功,需退出后重新登录");
Sleep(2000);
system("cls");
main();
break;
}
case 8:
{
Sleep(1000);
printf("正在读取文件信息,请稍后......\n");
Sleep(2000);
system("cls");
readfile();
break;//后加的break
}
case 9:
{
main();
break;
}
}
}
}
{
case 1:
{
printf("please insert the goods' information:");
printf("\nName :");
scanf("%s", a);
printf("Number :");
scanf("%s", e);
printf("grade :");
getchar();
scanf("%c", &t);
printf("Date :");
scanf("%d", &f);
printf("Money :");
scanf("%f", &g);
AddHead(head, a, e, t, f, g);
system("cls");
break;
}
case 2:
{
printf("\nNumber:");
scanf("%s", h);
Delete(head, h);
system("cls");
break;
}
case 3:
{
printf("please input the goods' name: ");
scanf("%s", b);
s = Search1(head, b);
system("cls");
printf("%-15s%-15s%3c%9d%9.2f\n", s->name, s->num, s->grade, s->date, s->money);
break;
}
case 4:
{
printf("please input the goods' number: ");
scanf("%s", k);
s = Search2(head, k);
system("cls");
printf("%-15s%-15s%3c%9d%9.2f\n", s->name, s->num, s->grade, s->date, s->money);
break;
}
case 5:
{
printf("please input the the goods' number:");
scanf("%s", k);
s = Search2(head, k);
printf("input grade:");
getchar();
scanf("%c", &t);
s->grade = t;
printf("input name:");
getchar();
gets_s(s->name);//在vs2015中,考虑到安全性,用gets_s代替了gets
printf("input Date: ");
scanf("%d", &f);
s->date = f;
printf("input money:");
scanf("%9f", &g);
s->money = g;
view(head->next);
system("cls");
break;//后加的break
}
case 6:
{
textFile(head);
Sleep(2000);
printf("写入完成!\n");
Sleep(2000);
system("cls");
break;//后加的break
}
case 7:
{
system("cls");
regist1();
Sleep(2000);
printf("更改成功,需退出后重新登录");
Sleep(2000);
system("cls");
main();
break;
}
case 8:
{
Sleep(1000);
printf("正在读取文件信息,请稍后......\n");
Sleep(2000);
system("cls");
readfile();
break;//后加的break
}
case 9:
{
main();
break;
}
}
}
}
//主函数(表函数)
int main()
{
int i;
int choice = -1;
while (1)
{
printf(" *******欢迎使用仓库货物管理系统*******\n");
printf(" ");
printf("\n|| ================================||\n");
printf("||1.登录 ||\n");
printf("||2.注册 ||\n");
printf("||3.退出 ||\n");
printf("|| ================================||\n");
printf("\t* 请输入您的选择:");
scanf("%d", &choice);
int main()
{
int i;
int choice = -1;
while (1)
{
printf(" *******欢迎使用仓库货物管理系统*******\n");
printf(" ");
printf("\n|| ================================||\n");
printf("||1.登录 ||\n");
printf("||2.注册 ||\n");
printf("||3.退出 ||\n");
printf("|| ================================||\n");
printf("\t* 请输入您的选择:");
scanf("%d", &choice);
switch (choice)
{
case 1:
system("cls");
for (i = 1; i <= 3; i++) //加个循环限制登陆次数为三次,三次失败则退出程序
{
login();
printf("您还有%d次机会!\n", 3 - i);//加个提示
}
exit(0);
break;
case 2:
system("cls");
regist();
break;
case 3:
exit(0);
break;
default:
printf("输入有误,请重输...\n");
break;
}
}
}
{
case 1:
system("cls");
for (i = 1; i <= 3; i++) //加个循环限制登陆次数为三次,三次失败则退出程序
{
login();
printf("您还有%d次机会!\n", 3 - i);//加个提示
}
exit(0);
break;
case 2:
system("cls");
regist();
break;
case 3:
exit(0);
break;
default:
printf("输入有误,请重输...\n");
break;
}
}
}
//登录
void login()
{
int i;
int flag;
char my_act[100];
char my_pass[100];
int X = -1;
printf("\t\t=================****登录****=================\n\n");
printf("\t\t* 输入账户: ");
scanf("%s", my_act);
printf("\n");
printf("\t\t* 输入密码: ");
scanf("%s", my_pass);
//flag = search(my_act, password);
flag = userCheck(my_act, my_pass);改动
void login()
{
int i;
int flag;
char my_act[100];
char my_pass[100];
int X = -1;
printf("\t\t=================****登录****=================\n\n");
printf("\t\t* 输入账户: ");
scanf("%s", my_act);
printf("\n");
printf("\t\t* 输入密码: ");
scanf("%s", my_pass);
//flag = search(my_act, password);
flag = userCheck(my_act, my_pass);改动
if (flag == 1)
{
printf("\t\t登录成功,正在跳转页面...\n");
p0 = pt;
Sleep(2000);
system("cls");
while (1)
{
X = menu();//成功进入
if (X == 1)
{
system("cls");
menu();
}
else return;
}
}
else if (flag == 0)
{
printf("\t\t账号或密码错误,请重新输入...\n");
Sleep(2000);
system("cls");
return;
}
{
printf("\t\t登录成功,正在跳转页面...\n");
p0 = pt;
Sleep(2000);
system("cls");
while (1)
{
X = menu();//成功进入
if (X == 1)
{
system("cls");
menu();
}
else return;
}
}
else if (flag == 0)
{
printf("\t\t账号或密码错误,请重新输入...\n");
Sleep(2000);
system("cls");
return;
}
}
int search(char *s, int psw)
{
if (header == NULL)
{
return 0;
}
pt = header;
while (1)
{
if (strcmp(pt->account, s) == 0 && pt->pw == psw)
{
return 1;
}
if (pt->xiage == NULL)//这里next改成了xiage
break;
pt = pt->xiage;//这里next改成了xiage
}
return 0;
}
int searchAC(char *s)
{
if (header == NULL)
{
return 0;
}
pt = header;
while (1)
{
if (strcmp(pt->account, s) == 0)
{
return 1;
}
if (pt->xiage == NULL)//这里next改成了xiage
break;
pt = pt->xiage;//这里next改成了xiage
}
return 0;
}
int search(char *s, int psw)
{
if (header == NULL)
{
return 0;
}
pt = header;
while (1)
{
if (strcmp(pt->account, s) == 0 && pt->pw == psw)
{
return 1;
}
if (pt->xiage == NULL)//这里next改成了xiage
break;
pt = pt->xiage;//这里next改成了xiage
}
return 0;
}
int searchAC(char *s)
{
if (header == NULL)
{
return 0;
}
pt = header;
while (1)
{
if (strcmp(pt->account, s) == 0)
{
return 1;
}
if (pt->xiage == NULL)//这里next改成了xiage
break;
pt = pt->xiage;//这里next改成了xiage
}
return 0;
}
//注册
void regist()
{
printf("\t\t=================****注册****=================\n\n");
struct info *p1;
char userPas[100] = {
0
};
p1 = (struct info*)malloc(sizeof(struct info));
p1->xiage = NULL;//这里next改成了xiage
int flag;
printf("\t\t请输入您的账户....\n");
printf("\t\t");
scanf("%s", p1->account);
printf("\t\t请输入用户名......\n");
printf("\t\t");
scanf("%s", p1->user);
printf("\t\t输入您的密码......\n");
printf("\t\t");
scanf("%ld", &p1->pw);
sprintf(userPas, "%ld", p1->pw);
flag = userCheck(p1->account, userPas);
//flag = search(p1->account, p1->pw);
if (flag == 1)
{
printf("\t\t账户已存在,请重新注册......\n");
Sleep(2000);
system("cls");
return;
}
else if (flag == 0)
{
userInfoSave(p1->account, userPas);
printf("\t\t注册成功\n"); //flagN = N;标记当前注册账户是链表中的第几个 p1->dsit = 0;
if (n == 0)
{
header = p1;
tail = p1;
n++;
Sleep(2000);
system("cls");
return;
}
else
{
tail->xiage = p1;//这里next改成了xiage
tail = p1;
n++;
Sleep(2000);
system("cls"); return;
}
}
void regist()
{
printf("\t\t=================****注册****=================\n\n");
struct info *p1;
char userPas[100] = {
0
};
p1 = (struct info*)malloc(sizeof(struct info));
p1->xiage = NULL;//这里next改成了xiage
int flag;
printf("\t\t请输入您的账户....\n");
printf("\t\t");
scanf("%s", p1->account);
printf("\t\t请输入用户名......\n");
printf("\t\t");
scanf("%s", p1->user);
printf("\t\t输入您的密码......\n");
printf("\t\t");
scanf("%ld", &p1->pw);
sprintf(userPas, "%ld", p1->pw);
flag = userCheck(p1->account, userPas);
//flag = search(p1->account, p1->pw);
if (flag == 1)
{
printf("\t\t账户已存在,请重新注册......\n");
Sleep(2000);
system("cls");
return;
}
else if (flag == 0)
{
userInfoSave(p1->account, userPas);
printf("\t\t注册成功\n"); //flagN = N;标记当前注册账户是链表中的第几个 p1->dsit = 0;
if (n == 0)
{
header = p1;
tail = p1;
n++;
Sleep(2000);
system("cls");
return;
}
else
{
tail->xiage = p1;//这里next改成了xiage
tail = p1;
n++;
Sleep(2000);
system("cls"); return;
}
}
}
//修改登录信息
void regist1()
{
printf("\t\t=================****修改信息****=================\n\n");
struct info *p1;
char userPas[100] = {
0
};
p1 = (struct info*)malloc(sizeof(struct info));
p1->xiage = NULL;//这里next改成了xiage
int flag;
printf("\t\t请刷新您的账户....\n");
printf("\t\t");
scanf("%s", p1->account);
printf("\t\t请刷新您的用户名......\n");
printf("\t\t");
scanf("%s", p1->user);
printf("\t\t输刷新的密码......\n");
printf("\t\t");
scanf("%ld", &p1->pw);
sprintf(userPas, "%ld", p1->pw);
flag = userCheck(p1->account, userPas);
if (flag == 1)
{
printf("\t\t账户已存在,请重新注册......\n");
Sleep(2000);
system("cls");
return;
}
else if (flag == 0)
{
userInfoSave(p1->account, userPas);
printf("\t\t更改信息成功\n"); //flagN = N;标记当前注册账户是链表中的第几个 p1->dsit = 0;
if (n == 0)
{
header = p1;
tail = p1;
n++;
Sleep(2000);
system("cls");
return;
}
else
{
tail->xiage = p1;//这里next改成了xiage
tail = p1;
n++;
Sleep(2000);
system("cls"); return;
}
}
void regist1()
{
printf("\t\t=================****修改信息****=================\n\n");
struct info *p1;
char userPas[100] = {
0
};
p1 = (struct info*)malloc(sizeof(struct info));
p1->xiage = NULL;//这里next改成了xiage
int flag;
printf("\t\t请刷新您的账户....\n");
printf("\t\t");
scanf("%s", p1->account);
printf("\t\t请刷新您的用户名......\n");
printf("\t\t");
scanf("%s", p1->user);
printf("\t\t输刷新的密码......\n");
printf("\t\t");
scanf("%ld", &p1->pw);
sprintf(userPas, "%ld", p1->pw);
flag = userCheck(p1->account, userPas);
if (flag == 1)
{
printf("\t\t账户已存在,请重新注册......\n");
Sleep(2000);
system("cls");
return;
}
else if (flag == 0)
{
userInfoSave(p1->account, userPas);
printf("\t\t更改信息成功\n"); //flagN = N;标记当前注册账户是链表中的第几个 p1->dsit = 0;
if (n == 0)
{
header = p1;
tail = p1;
n++;
Sleep(2000);
system("cls");
return;
}
else
{
tail->xiage = p1;//这里next改成了xiage
tail = p1;
n++;
Sleep(2000);
system("cls"); return;
}
}
}
//密码判断
int judgePW(long ps)
{
int n, k;
for (k = 0; k<6; k++)
{
n = ps % 10;
ps = ps / 10;
if ((n < 0 || n > 9) && ((n<int('z') || n>int('a')) && (n<int('Z') || n>int('A')))) //(n < 0 || n > 9)
{
return 2;
}
}
return 1;
}
int judgePW(long ps)
{
int n, k;
for (k = 0; k<6; k++)
{
n = ps % 10;
ps = ps / 10;
if ((n < 0 || n > 9) && ((n<int('z') || n>int('a')) && (n<int('Z') || n>int('A')))) //(n < 0 || n > 9)
{
return 2;
}
}
return 1;
}
//文件写入函数
int textFile(NodePtr goods)//把list改成了goods 把void改成了int
{
FILE *writePtr;
Goo* curnode = goods;//把list改成了Goo
writePtr = fopen("d:\\abc.txt", "wb+");//把TXT改成dat拓展名,则为二进制
fprintf(writePtr, "%-6s%-16s%-11s%10s%20s\r\n",//fprintf->fwrite
"NAME", "NUMBER", "GRADE", "DATA", "WEIGHT(kg)");
while (curnode != NULL)
{
fprintf(writePtr, "%-6s%-16s%-11c%10d%20f\r\n", curnode->name, curnode->num, curnode->grade, curnode->date, curnode->money); //修改参数 fprintf->fwrite
curnode = curnode->next;
}
fclose(writePtr);
return 0;
}
int textFile(NodePtr goods)//把list改成了goods 把void改成了int
{
FILE *writePtr;
Goo* curnode = goods;//把list改成了Goo
writePtr = fopen("d:\\abc.txt", "wb+");//把TXT改成dat拓展名,则为二进制
fprintf(writePtr, "%-6s%-16s%-11s%10s%20s\r\n",//fprintf->fwrite
"NAME", "NUMBER", "GRADE", "DATA", "WEIGHT(kg)");
while (curnode != NULL)
{
fprintf(writePtr, "%-6s%-16s%-11c%10d%20f\r\n", curnode->name, curnode->num, curnode->grade, curnode->date, curnode->money); //修改参数 fprintf->fwrite
curnode = curnode->next;
}
fclose(writePtr);
return 0;
}
//文件的读取
int readfile()
{
FILE *readPtr;
char ch;
if ((readPtr = fopen("d:\\abc.txt", "rb")) == NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
ch = fgetc(readPtr);
while (ch != EOF)
{
putchar(ch);
ch = fgetc(readPtr);
}
fclose(readPtr);
}
int readfile()
{
FILE *readPtr;
char ch;
if ((readPtr = fopen("d:\\abc.txt", "rb")) == NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
ch = fgetc(readPtr);
while (ch != EOF)
{
putchar(ch);
ch = fgetc(readPtr);
}
fclose(readPtr);
}
//用户检查,如果已存在用户,那么就不用重新注册
int userCheck(char *s, char *p)
{
char szTest[1000] = { 0 };
char szTest1[1000] = { 0 };
int len = 0;
int num = 0;
FILE *fp = fopen("D:\\user.txt", "r");
if (NULL == fp)
{
printf("failed to open dos.txt\n");
return 0;
}
int userCheck(char *s, char *p)
{
char szTest[1000] = { 0 };
char szTest1[1000] = { 0 };
int len = 0;
int num = 0;
FILE *fp = fopen("D:\\user.txt", "r");
if (NULL == fp)
{
printf("failed to open dos.txt\n");
return 0;
}
while (!feof(fp))
{
memset(szTest, 0, sizeof(szTest));
fgets(szTest, sizeof(szTest) - 2, fp); // 包含了\n
{
memset(szTest, 0, sizeof(szTest));
fgets(szTest, sizeof(szTest) - 2, fp); // 包含了\n
int i = strlen(szTest);
if (szTest[i - 1] == '\n') //因为最后一行没有回车符
{
szTest[i - 1] = 0;
}
if (szTest[i - 1] == '\n') //因为最后一行没有回车符
{
szTest[i - 1] = 0;
}
memset(szTest1, 0, sizeof(szTest1));
fgets(szTest1, sizeof(szTest1) - 2, fp); // 包含了\n
i = strlen(szTest1);
if (szTest1[i - 1] == '\n') //因为最后一行没有回车符
{
szTest1[i - 1] = 0;
}
if (szTest1[i - 1] == '\n') //因为最后一行没有回车符
{
szTest1[i - 1] = 0;
}
//printf("%s%s",szTest,szTest1);
if (strcmp(szTest, s) == 0 && strcmp(szTest, p) == 0)
{
return 1;
}
// printf("%s", szTest);
}
fclose(fp);
return 0;
}
//保存密码
int userInfoSave(char *u, char *p)
{
FILE *fp = fopen("D:\\user.txt", "a+");
if (fp == 0) { printf("can't open file\n"); return 0; }
fseek(fp, 0, SEEK_END);
fwrite("\n", strlen("\n"), 1, fp);
fwrite(u, strlen(u), 1, fp);
printf("%s", u);
fwrite("\n", strlen("\n"), 1, fp);
fwrite(p, strlen(p), 1, fp);
fwrite("\n", strlen("\n"), 1, fp);
fclose(fp);
return 1;
}
int userInfoSave(char *u, char *p)
{
FILE *fp = fopen("D:\\user.txt", "a+");
if (fp == 0) { printf("can't open file\n"); return 0; }
fseek(fp, 0, SEEK_END);
fwrite("\n", strlen("\n"), 1, fp);
fwrite(u, strlen(u), 1, fp);
printf("%s", u);
fwrite("\n", strlen("\n"), 1, fp);
fwrite(p, strlen(p), 1, fp);
fwrite("\n", strlen("\n"), 1, fp);
fclose(fp);
return 1;
}