void Student(struct student stu[N]) { int i, n = 0; FILE* fp = fopen("666.txt", "rb+"); struct student *p = stu; char num1[] = "2021110300236"; char pass1[] = "111111"; char num[13], pass[10]; while (1) { input:printf("请输入学号:"); scanf("%s",&num); printf("请输入密码:"); scanf("%s",&pass); for (i = 0; i < sum; i++) { if(strcmp(stu[Sid].num,num1)==0||strcmp(stu[Sid].pass,pass1==0)){ Sid=i; break; } if(i==sum){ printf("你输入错误,请重新输入!\n");} else { break; } }把这串代码改成可以通过读取文本内的数据作为账号密码的代码
时间: 2024-04-07 07:32:11 浏览: 13
void Student(struct student stu[N]) {
int i, n = 0, sum = N;
FILE* fp = fopen("666.txt", "r");
struct student *p = stu;
char num1[13], pass1[10];
char num[13], pass[10];
while (1) {
input:
printf("请输入学号:");
scanf("%s",&num);
printf("请输入密码:");
scanf("%s",&pass);
while (fscanf(fp, "%s %s", num1, pass1) != EOF) {
if(strcmp(num1, num) == 0 && strcmp(pass1, pass) == 0){
printf("登录成功!\n");
// 处理登录成功后的逻辑
break;
}
}
if (feof(fp)) {
printf("你输入错误,请重新输入!\n");
fseek(fp, 0, SEEK_SET); // 文件指针回到文件开头
} else {
break;
}
}
fclose(fp); // 关闭文件
}
注:这里假设文本文件中每一行都是一个学生的账号密码,以空格分隔。