• ベストアンサー

C言語の実行結果

C言語プログラムで、scanfにした時、実行結果では入力した文字がそのまま表示されますが、その表示をパスワードみたいに*で表示サせることはできないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

scanf自体は入力ですが、scanfが使う下位のライブラリが文字をエコーバック(=表示)しています。 エコーバックを止めるには、OSに依存した方法が必要(Windowsの場合とかLinuxの場合とかで違う)。 一文字入力ごとに * を出したいなら、「エコーバックをしない1文字単位の入力」を使う必要があります。これもOS依存ですね。 普通の入力は「エコーバックをする1行単位(Enterを押すまで自分のプログラムに戻ってこない)の入力」 です。

nahe1112
質問者

お礼

ありがとうございます

その他の回答 (1)

  • Interest
  • ベストアンサー率31% (207/659)
回答No.1

scanf は入力のみですから、出力(表示)はご自身で好きなようにいじれば良いのでは? 例えば、こんな感じ。 void main(void) {  char password[ 10 ];  int i;  scanf("%s", password );  // scanf で読んだ文字の数だけ * を表示する。  for(i=0; i<strlen(password); i++){    putchar('*');  }  return; }

nahe1112
質問者

お礼

おお、ありがとうございます。