-3

C で簡単なユーザーとパスワードの認証を行おうとしています。入力を取得するときに gets() を使用しないように言われたので、代わりに fgets() を使用する必要があります。しかし、 fgets() がどのように機能するのか、またはなぜこの入力が得られるのかはわかりません。これがコードです。

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

int login(char *user, char *passwd){

    int enter = 0;
    char p[6];
    char u[6];
    printf("User: ");
    fgets(u, sizeof u, stdin);
    printf("Pass: "); 
    fgets(p, sizeof p, stdin);
    printf("%s\n", p);
    if (strcmp(user, u) == 0 && strcmp(passwd, p) == 0){
        enter = 1;
    }
    return entrar;
}

int main(){
    char user[] = "admin";
    char passwd[] = "12345";
    if (login(user, passwd)){
        puts("--ACCESS GRANTED--");
    }
    else{
        puts("--Wrong pass or user--");
    }
    return 0;
}

出力

ユーザー: 管理者

合格:

--間違ったパスまたはユーザー--

Enter キーを押した後、パスワードを入力することさえできません。

4

1 に答える 1