Как я могу преобразовать ввод консоли как ничего, кроме введенного пароля - PullRequest
2 голосов
/ 24 декабря 2009

Я имею в виду, я хочу, чтобы ввод был невидимым, как ввод пароля при входе в Linux. Как я могу реализовать это как в C под Linux и Windows. * 1001 спасибо *

Ответы [ 3 ]

4 голосов
/ 24 декабря 2009

Не существует единого решения, которое будет работать на разных платформах.

Для Linux вы можете использовать функцию getpass () .

Для окон вы можете попробовать _getch () .

3 голосов
/ 24 декабря 2009

stty (1) у меня работает в Linux

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

int main(void) {
  char buf1[100], buf2[100];
  size_t len1, len2;

  system("stty -echo");
  printf("Enter Password: ");
  fflush(stdout);
  fgets(buf1, sizeof buf1, stdin);
  len1 = strlen(buf1);
  if (len1 && buf1[len1 - 1] == '\n') buf1[--len1] = 0;
  puts("");

  system("stty echo");
  printf("Enter Password again: ");
  fflush(stdout);
  fgets(buf2, sizeof buf2, stdin);
  len2 = strlen(buf2);
  if (len2 && buf2[len2 - 1] == '\n') buf2[--len2] = 0;

  puts("\n\n");
  printf("First password: [%s]\n", buf1);
  printf("Second password: [%s]\n", buf2);
  return 0;
}
0 голосов
/ 24 декабря 2009

Насколько я понимаю, нет стандартной процедуры ввода для ввода без эха. Вам придется использовать специфические для платформы функции.

Однако, если вы используете каркас GUI, некоторые из них имеют поля ввода текста для паролей и совместимы в Windows и Linux.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...