2016-11-14 7 views
-3

もし私がShowMeMine(struct user_node userob)をifメソッドから呼び出そうとしているのであれば、パスワードが正しい場合でも間違ったpasswrodと言われます。ここで条件を入力した場合に行を削除するとログインが成功します このファイルを.h拡張子として保存しています。もしcoditionがelse部分につながる場合の呼び出しメソッド

#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); 

} 
+0

[gets()を使用しないでください、それは結構です](http://stackoverflow.com/q/1694036/2173917)。代わりに['fgets()'](https://linux.die.net/man/3/fgets)を使用してください。 –

+0

***あなたのコードから失礼/悪質なコメント(印刷ステートメント)を削除してください。面白いかもしれませんが、多くの人々がこのような無礼を感じます。*** –

+0

非常に申し訳ありません。 それはちょうど間違いでした。 @SouravGhosh –

答えて

0

あなたのコードは、あなたが終了することを忘れているので、動作しない理由はパスワードが読み:

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

のPS:私は理解していない関数が(値により)構造体を与えている理由あなたは値を返さず、使用もしない。割り当てuserob=userob;も面白いです。最後に、ファイルを閉じる前に閉じなければなりません。

関連する問題