C言語でパスワード入力
パスワード入力するときはエコーバックは無いほうがいいわけですが、scanfとかで読み込むとエコーバックがあるので非常に良くないです。
そこでunixではgetpassという関数を使うことができるので早速使ってみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <stdio.h> #include <unistd.h> int main(void) { char *password; password = getpass("パスワードを入力してください。:"); printf("パスワードは %s です。\n", password); return 0; } |
※Windowsでは動きません
実行するとエコーバック無しでパスワードが入力できるかと思います。
ちなみにこれをやろうと思ったのは大学のデータベースの授業で、CからMySQLのAPIを使ってデータベースのデータを読む際、パスワードを入力するのに
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <stdio.h> #include <stdlib.h> int main(void) { char password[100]; printf("パスワードを入力してください。:"); system("stty -echo"); scanf("%s", password); system("stty echo"); printf("パスワードは %s です。\n", password); return 0; } |
とstty -echo
でエコーバック消していたのが気になっていたからです。
他にもJavaとかRubyのサンプルコードも披露していましたが、「ライブラリ」とか「ヌルポインタ」とか「継承」とか「インスタンスメソッド」とか言っても大学ではC言語をちょっとしかやっていない程度なので絶対誰も分からないよね。
というかsttyコマンドってWindowsじゃ普通動かないから多くの学生の環境じゃ動かないよね。
その前にMySQL自体インストールしてな(ry
C言語開発環境自体も(ry
まあ僕が話聞いてて楽しかったのでいいんですけどね!