• ベストアンサー

C言語の実行結果

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

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4846/10257)
回答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
質問者

お礼

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

関連するQ&A

  • C言語 While文(ループ)内の文字入力

    While文で、1文字入力をやれば思うようにうまくいかない。数字(データ)入力や、文字列入力の場合(%d 及び %s)ならうまくいく。文面で説明するより実際のプログラムを見た方が分かりやすいと思うので、以下にプログラムとその実行結果、実行結果に対する私が意図している結果とを示します。 【プログラム部分】 #include<stdio.h> int main(void) {    char a;    while(1)    {    printf("1文字を入力:");    scanf("%c",&a);    if(a == 'x')      break;    printf("入力したのは %c です。\n",a);    }    return 0; } 【実行結果(キーボードからは「 e 」と入力」)】 1文字を入力:e 入力したのは e です。 1文字を入力:入力したのは です。 1文字を入力: 【私が意図している結果】 1文字を入力:e 入力したのは e です。 1文字を入力:  ちなみにC言語の環境は、インターネットで無料で入手できる試食版です。(LSI C-86 Ver3.30c 試食版)  上記プログラムを見てもらえればお分かりだと思いますが、「xを入力するまで、永遠と1文字入力とその表示を行う」ことを意図しています。しかし実際の結果は意図に反しています。  1回目は正常に動作しているようですが、問題は2回目以降。scnafで入力待ちをすることなく、なぜかscanfをスルーする形で3回目のscanf入力待ちとなっています。この理由を教えてください。お願いします。

  • C言語で、ioctlを使用し入力待ちつつ実行を続けたい

    C言語で入力を読むときgetc関数やscanf関数を 使用することが多いのですが これらの関数を使用すると入力が完了するまで そこでプログラムの実行がストップしてしまい リアルタイムで処理できません そこでioctlを使用して ioctl(0, I_NREAD, &n) というコードを書き、入力があったかどうかを調べようと思いました ところがこの方法だとenterが入力されない限り キー入力があったと認識されないので たとえば"a"、"b"、"c"、"d"と入力してもすぐには読み込めず この入力のあとにenterを入力して はじめて文字が読めます enterが入力されなくても、入力された文字を調べるには どうしらたよいのでしょうか?

  • C言語で作ったEXEファイルの実行について

    最近、C言語で作ったEXEファイルをPC上で実行しました。 ファイルは実行できて、数値の入力、計算結果の表示はされるのですが すぐに閉じて(終了して)しまいます。 プログラムの流れは 1)メッセージの表示 2)カンマ区切りで数値の入力 3)計算結果の表示 の順番で実行されます。 しかし、3)が表示された後すぐファイルが閉じられてしまうため、 計算結果の確認ができません。 エディター(Bcpad)で実行すると計算結果が表示された後に何かキーを押すと正常に終了します。 どうすればいいでしょうか。

  • C言語での実行

    C言語(ボーランドのCpad)を使っています。 いつも使ってるパソコンと違うパソコンでC言語のプログラムをし始めました。 前のパソコンと同じようにプログラムのコードをCファイルで保存して同じように新しいパソコンから開いて同じように実行ボタン押したのですが、実行できず、exeファイルが存在しませんって表示されます。 ちなみに、動かすプログラムは4つあり、そのうちの3つはちゃんと実行でき、ファイルも作成できるのですが、同じ方法でやってるあと1つのプログラムだけがうまくいきません。 4つとも同じフォルダにするようにしていて、3つはちゃんと実行できるので、フォルダが違うことはないと思います。 なぜ「exeファイルが存在しません」ってなるのか。 ちゃんとフォルダにCファイルはあるのに。 ちなみに、正確にできる3つのように、実行できると「OBJファイル」とか「アプリケーション」とかも同時に作成されます。 ただ、問題の1つのプログラムは当然、実行できず、exeファイルが存在しませんって表示されるので何も作成されません。 ボーランドのC言語、実行、ファイル、など詳しい方ぜひ教えて下さい。 同じやり方で今までのパソコンではできていたのに、パソコン変えると実行できなくなります。 フォルダやCファイルが正確ではないのかとも思いましたが、前までのパソコン通りにやっているので問題ないと思います。 ぜひアドバイス下さい。

  • プログラミングC言語の問題ですがわかりません。

    プログラミングC言語の問題ですがわかりません。 5つのint型変数a,b,c,ans,responseを宣言する。a,b,cの値はscanf関数で読みこむことにより初期化する。 a(1)b(2)c= と表示して、scanf関数によりユーザーの答案をresponseに読み込み、演算結果が正しければ1、間違っていたら0を表示するプログラムを作成しなさい。ここで(1)と(2)には算術演算子(+,-,*,/,%)がはいる。5×5=25通りの演算をすべて実行するようにしなさい。 特に正しければ1、間違っていたら0を表示するプログラムがわかりません。 まだprintfとscanf関数と演算子しかやっていないのでそれを踏まえたプログラムを1通りだけでいいので書いて頂けると幸いです。

  • 実行結果の順番がおかしいんです・・・・・(。。;)

    現在C言語の勉強をしている初心者です。突然ですが 例えば、このようにプログラムしたら・・・ #include <stdio.h> int main(void) { int n; printf("何か数字を入力してください:"); scanf("%d",&n); printf("\n入力した数字は%dです。\n",n); return 0; } <<実行結果>>  何か数字を入力してください:2 [Enter]  入力した数字は2です。 って普通は出力されますよね??しかし、私の使っているBorland C++ Compiler 5.5 では <<実行結果>>  2 [Enter]  何か数字を入力してください:  入力した数字は2です。 っていう風に、まず、なにか入力しないとprintfの内容を出力してくれないんです。(汗)これって実行結果の順番がおかしいですよね・・・(。。;) どうかこの状態を直せるアドバイスをください。 よろしくお願い致します。m(__)m

  • C++ Builder Xを使って実行結果が表示させるには?

    C++ Builder Xのコンパイラを使ってC言語の勉強をしているのですが実行結果が表示されません。 例えば、 printf("Hello"); といったものなら表示されるのですが printf("点数を入力してください。\n"); scanf("%d", &i); とかいったものを使うとの点数の入力ができませんでした。 保存先にDebug_Buildというフォルダができていてそこにコマンドプロンプトがあったのでそこをクリックしてみると、 「点数を入力してください」と表示されていたので 点数を入力してからエンターキーを押してみたのですがその画面が消えてしまって何もおきませんでした。 どなたか解決策をご存知でしょうか?よろしくおねがいします。

  • c言語の実行が分かりません

    C言語のプログラムを実行させる方法が分かりません。 unixでC言語を以下の手順で学習しています。 1 emacs上でファイル名.cというソースファイルを作成。 2 xterm上で gcc ファイル名.c と入力 その後xterm上で後一つコマンドを入力すればいいのですが、そのコマンドを忘れてしまいました。教えていただければ、ありがたいです。

  • C言語のアルゴリズムについて

    C言語で「標準入力から英語の文章を読み込んで,文字列Ilmorが出現した行をその行番号とともに表示するプログラムを作りなさい.」とプログラムを作りたいのですが、文字列を発見するところまでは分かるのですが、その行どうやって表示すればいいのか分かりません。また、文章を読み込むのもすごくややこしく最後にエンターを二回押すなどの制限があります。(scanf) 参考になるプログラムを書いていただける方いませんか?できればC言語のアルゴリズムについて詳しく書いた本やサイトがあれば教えていただきたいです。 レベルは超入門的な本を2,3冊読んだ程度です。アルゴリズムなどにはまったく触れてなかったし、ライブラリー関数も少ししか載ってなかったので関数の本もあれば教えていただきたいです。

  • C言語のプログラミングについてです。

    C言語のプログラミングについて教えて欲しいです。 scanf関数を用いて、キーボードから文字列(最大30文字)を読み込み、これをchar型配列に格納します。最大10個までの文字列が入力された場合か、「END」が入力された時、入力された逆順で画面に表示するプログラム。作成しなさい。 〈完成例〉 adjm 10mdjp jpd-4 njad' END njad jpd-4 10mdjp adjm

専門家に質問してみよう