在C语言中,有没有一种方法可以在函数末尾突然结束一个程序?
我有一个学校项目,要求我创建一个C程序,包括密码保护。我有一个处理登录的函数,但是当输入错误的密码时,该函数仍然允许用户继续访问程序的主要部分。我试着使用abort和exit,但它们没有帮助。看起来他们只是退出函数而不是程序 这是我的密码在C语言中,有没有一种方法可以在函数末尾突然结束一个程序?,c,C,我有一个学校项目,要求我创建一个C程序,包括密码保护。我有一个处理登录的函数,但是当输入错误的密码时,该函数仍然允许用户继续访问程序的主要部分。我试着使用abort和exit,但它们没有帮助。看起来他们只是退出函数而不是程序 这是我的密码 void userlogin(void){ FILE *fp; char uName[10], pwd[10];int i;char c; pUser=(struct user *)malloc(sizeof(struct user)); prin
void userlogin(void){
FILE *fp;
char uName[10], pwd[10];int i;char c;
pUser=(struct user *)malloc(sizeof(struct user));
printf("1. Login Through An Existing Account\n2. Create New account\n");
scanf("%d",& i);
//system("cls");
switch(i){
case 1:
if ( ( fp=fopen("user.dat", "r+")) == NULL) {
if ( ( fp=fopen("user.dat", "w+")) == NULL) {
printf ("Could not open file\n");
exit ( 1);
}
}
printf("Username: ");
scanf("%9s",uName);
printf("Password: ");
scanf("%9s",pwd);
while ( fread (pUser, sizeof(struct user), 1, fp) == 1) {
if( strcmp ( pUser->username, uName) == 0) {
printf ("Match username\n");
if( strcmp ( pUser->password, pwd) == 0) {
printf ("Match password\n");
//accessUser();
}
else if ( strcmp ( pUser->username, uName) == 1){
printf("INCORRECT PASSWORD\n");
printf("ACCESS DENIED");
abort();
}
}
}
break;
case 2:
do
{
if ( ( fp=fopen("user.dat", "a+")) == NULL) {
if ( ( fp=fopen("user.dat", "w+")) == NULL) {
printf ("Could not open file\n");
exit ( 1);
}
}
printf("Choose A Username: ");
scanf("%9s",pUser->username);
printf("Choose A Password: ");
scanf("%9s",pUser->password);
fwrite (pUser, sizeof(struct user), 1, fp);
printf("Add another account? (Y/N): ");
scanf(" %c",&c);//skip leading whitespace
}while(c=='Y'||c=='y');
break;
}
printf("Welcome %s\n", uName);
free ( pUser);//free allocated memory
fclose(fp);
}我认为您的代码中可能还有其他错误 导致正常程序终止 导致程序异常终止
如果您的程序没有退出,那是因为这两个函数都没有执行。
exit
将退出程序,而不仅仅是函数。你确定你找到了那个代码路径吗?这可能是一个很好的时间。另外,请,学习如何创建一个。如果您需要我们的帮助,那么我们需要一个MCVE,以及实际输入、预期和实际输出。我怀疑代码应该是strcmp(pUser->username,uName)==10