簡體   English   中英

來自scanf函數的輸入給出了意外結果

[英]Input from scanf function giving unexpected result

我試圖在Linux系統和gcc-4.7編譯器上獲取用於身份驗證的用戶名和密碼,如下所示:

#include "stdio.h"
#include "stdlib.h"
#include <termios.h>
#include <unistd.h>

void getuserdata(char *passwd)
{
    struct termios term, term_orig;
    tcgetattr(STDIN_FILENO, &term);
    term_orig = term;
    term.c_lflag &= ~ECHO;
    tcsetattr(STDIN_FILENO, TCSANOW, &term);

    scanf("%s", passwd);
    /* Remember to set back, or your commands won't echo! */
    tcsetattr(STDIN_FILENO, TCSANOW, &term_orig);

}

int main()
{
    char *password, *username;
    printf("Enter username: ");
        scanf("%s", username);
        fflush(stdin); 
    printf("\n");

    printf("\nEnter password: ");
    getuserdata(password);

    printf("Entered username is:%s\n", username);
    printf("Entered password is:%s\n", password);
    return 0;
}

預期的行為如下:

Enter username: test 
Enter password:
Entered username is: test 
Entered password is: xxxx

但是它不起作用,並且將null用作用戶名或密碼。

伙計們,我要去哪里錯了?

任何幫助將不勝感激。

謝謝。

您沒有為usernamepassword分配內存。

char *password, *username;
username = malloc(50);
printf("Enter username: ");
    scanf("%49s", username);

printf("\n");

printf("\nEnter password: ");
password = malloc(50);
getuserdata(password);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM