从if codition调用方法导致else部分

从if codition调用方法导致else部分,c,C,当我试图从if条件的Login方法调用ShowMeMine(struct user_node userob)时,即使密码是正确的,它也会告诉我错误的passwrod。如果我从if条件中删除该行,则表示登录成功。请在此处输入代码 我正在将此文件保存为.h扩展名 #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> struct user_node{

当我试图从if条件的Login方法调用ShowMeMine(struct user_node userob)时,即使密码是正确的,它也会告诉我错误的passwrod。如果我从if条件中删除该行,则表示登录成功。请在此处输入代码 我正在将此文件保存为.h扩展名

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>

struct user_node{
    char username[20];
    char password[100];
    char address[200];
    int age;
    int unique_id;    //It will help in connecting user_node and his bill
};
struct bill{
    long user_bill_no;
    int show_this_bill;
    long meter_no;
    double total_amount;
    int unique_id;

};

//viewing specific person 
void ShowMeMine(struct user_node userob){
    printf("");
}
//Login authentication check
void Login(struct user_node userob){
    FILE *fpread;
    fpread=fopen("userdata.DAT","rb+");
    char key[100];
    char user_name[40],password[100];
    char choice,ch;
    int x;
    int pass_count=0;
    printf("Enter your name");
    gets(user_name);
    while((ch=getch())!='.'){
        password[pass_count++]=ch;
        printf("*");
    }
    while(fread(&userob,sizeof(userob),1,fpread)==1){
        if(stricmp(user_name,userob.username)==0){
            strcpy(key,userob.password);
            userob=userob;
            break;
        }
    }
    if(strcmp(key,password)==0){
        printf("Sucessfully Logged In");
        ShowMeMine(userob);
    }
    else printf("Login Unsuccessful ");
    printf("%d",x);

}
#包括
#包括
#包括
#包括
结构用户节点{
字符用户名[20];
字符密码[100];
字符地址[200];
智力年龄;
int unique_id;//它将有助于连接用户_节点及其账单
};
结构汇票{
长用户账单号;
int显示本账单;
长米诺;
两倍的总金额;
int-unique_-id;
};
//查看特定的人
void ShowMeMine(结构用户\节点用户OB){
printf(“”);
}
//登录验证检查
无效登录(结构用户\节点用户OB){
文件*fpread;
fpread=fopen(“userdata.DAT”,“rb+”);
字符键[100];
字符用户名[40],密码[100];
字符选择,ch;
int x;
int pass_count=0;
printf(“输入您的姓名”);
获取(用户名);
而((ch=getch())!='。){
密码[pass_count++]=ch;
printf(“*”);
}
while(fread(&userob,sizeof(userob),1,fpread)==1){
if(stricmp(用户名,userob.username)==0){
strcpy(key,userob.password);
userob=userob;
打破
}
}
如果(strcmp(密钥、密码)==0){
printf(“成功登录”);
ShowMeMine(userob);
}
else printf(“登录失败”);
printf(“%d”,x);
}

您的代码不起作用的原因是您忘记终止密码读取:

    while((ch=getch())!='.'){
        password[pass_count++]=ch;
        printf("*");
    }
    password[pass_count]= '\0';

附言:我不明白为什么函数被赋予了一个你不使用的结构(按值),也没有返回值给它。分配
userob=userob也很有趣。最后,您必须在返回之前关闭该文件。

。请改用。请从代码中删除粗鲁/辱骂性的评论(打印语句),这对你来说可能很有趣,但是,很多人会觉得这是不尊重。对此非常抱歉。这只是一个错误@这只是个错误,谢谢。下次,请小心,收回自定义标志。