void Student(struct student stu[N]) { int i, n = 0; struct student *p; p=stu; char num1[] = "2021110300236"; char pass1[] = "111111"; char num[13], pass[10]; input:printf("请输入学号:"); scanf("%s",&num); printf("请输入密码:"); scanf("%s",&pass); for(i=0;i<sum;i++) { if(strcmp(num,num1)==0 && strcmp(pass,pass1)==0) { Sid+i; break; } } if(i==sum){ printf("你输入错误,请重新输入!\n"); goto input; } 优化代码
时间: 2024-04-07 09:28:47 浏览: 38
这段代码可以进行一些优化,例如:
1. 使用fgets代替scanf,可以避免输入缓冲区溢出的问题。
2. 在for循环中使用return语句代替break语句。
3. 不要使用goto语句,可以使用while循环代替。
下面是优化后的代码:
void Student(struct student stu[N]) {
int i, n = 0;
struct student *p;
p = stu;
char num1[] = "2021110300236";
char pass1[] = "111111";
char num[13], pass[10];
while (n < 4) {
printf("请输入学号:");
fgets(num, 13, stdin);
printf("请输入密码:");
fgets(pass, 10, stdin);
for (i = 0; i < sum; i++) {
if (strcmp(num, num1) == 0 && strcmp(pass, pass1) == 0) {
Sid + i;
return;
}
}
printf("你输入错误,请重新输入!\n");
n++;
}
printf("已达到最大输入次数,程序退出。\n");
}
阅读全文