如何将控制台的输入转换为输入密码

时间:2009-12-24 05:50:38

标签: c windows linux console

我的意思是我希望输入在我登录Linux时输入密码就像隐藏一样。 如何在Linux和Windows下的C中实现它。 感谢

3 个答案:

答案 0 :(得分:4)

没有一种解决方案可以跨平台运行。

对于Linux,您可以使用getpass() function

对于Windows,您可以尝试_getch()

答案 1 :(得分:3)

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;
}

答案 2 :(得分:0)

根据我的理解,没有回声的输入没有标准的输入例程。您必须使用特定于平台的功能。

但是,如果您使用的是GUI框架,则有些框架具有密码的文本输入字段,并且在Windows和Linux上兼容。