在C语言中,有没有一种方法可以在函数末尾突然结束一个程序?

在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

我有一个学校项目,要求我创建一个C程序,包括密码保护。我有一个处理登录的函数,但是当输入错误的密码时,该函数仍然允许用户继续访问程序的主要部分。我试着使用abort和exit,但它们没有帮助。看起来他们只是退出函数而不是程序

这是我的密码

    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