問題タブ [getchar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C getchar() および putchar()
K&R を使って、C について頭を悩ませようとしています。文字が「a」でない限り、ユーザーの前の行を画面に出力するプログラムを書きたいと思います。
はい、プログラムはそれほど多くありません。しかし、それは意図したとおりには機能しません。上記のコードは、a であるかどうかに関係なく、すべての文字を出力するだけなので、文字「a」の ASCII 値を使用する必要がありますか。
c - getchar()は前のprintf()から最後の文字を取得しますか?
私は難解言語brainf*ck用のコンパイラ/インタプリタを書いています(StackOverflowの冒とく的なポリシーについてはよくわからないので、誰かが私にそうする必要はないと言われるまで自分自身を検閲します)、そして私は走っています非常に不思議な(少なくとも私にとっては)バグに陥り、デバッグ出力の最後の文字が、実行中のbrainf*ckプログラムへの入力として受け入れられます。インタプリタのソースは次のとおりです。brainf*ck.c、プログラムのソース:OR.bf、および実行中のOR.bfからbrainf*ck実行可能ファイルを介した出力の部分的な印刷。(コードが乱雑であることを事前に多くの謝罪。楽しいプロジェクトとして1日以内に通訳を書きました。)助けてくれてありがとう!
brainf * ck.c:
OR.bf:
出力:
上記の出力の形式は次のとおりです。eval:<* Instruction ptr> <* data ptr>
(SOは上記の行を操作しているように見えるので、brainf * ck.cのeval()の先頭を参照してください。
ご覧のとおり、出力の最後から2番目と最後の行は、getchar()が(何らかの理由で)ユーザー入力を待つのではなく、(何らかの理由で)最後から2番目の行の終わりから改行文字を取得していることを示しています。 1)。
このバグがプログラムに発生した理由は、修正方法よりも興味があります。これは、Cの入力ストリームで思っていたほどのハンドルがないと思われるためですが、修正は(もちろん)大歓迎です。
c - int c = getchar()?
わかりましたので、この本を読んでいます:The C Programming Language - Kernighan and Ritchie著(第2版)と、物事がどのように機能するかを理解するのに苦労している例の1つ。
行: for(i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i)
c = getchar() と書かれているところに、コマンドラインから整数 = 文字を入力するにはどうすればよいですか? 整数はいですが、入力した文字はどのように保存されていますか?
前もって感謝します
c - getchar() の使用法に関する簡単な質問ですか?
この非常に優れたサイトで getchar() 関数に関するすべてを検索すると、次の投稿が見つかりました。
私はプログラム全体を理解しており、呼び出されるたびに getchar がテキスト ストリームから次の入力文字を読み取り、それを値として返すことを理解しています。つまり、その後
変数 c には入力の次の文字が含まれます。通常、文字はキーボードから入力されます。
しかし、ここで問題があります。なぜプログラマーはプログラムの最後で getchar() を呼び出したのでしょうか?
c - 「while(getchar() != '\n')」に戸惑う
getchar(
) は、ユーザーが入力した行の最初の文字を取得し、次に次の文字を取得するだけの関数であることを知っていgetchar()
ました。コードの最後に行を入力すると、ユーザーが入力するまでプログラムを待機させるためのものです。情報を表示するときにコンソールを閉じないようにします。
なぜこのコード行を使用するのでしょうか?
while(getchar()!='\n');
行の終わりが見つかるまで行のすべての文字を読み取ることを知っていたので、ループが壊れます..右.? しかし、なぜこれが役立つのでしょうか? このコード行を書かないとどうなるでしょうか?
c - Linux の getch() & getche() に相当するものは何ですか?
Linux で conio.h の同等のヘッダー ファイルを見つけることができません。
getch()
Linux に&getche()
関数のオプションはありますか?
ユーザーが1つのキーを押すだけでオプションを提供し、プロセスを進める必要があるスイッチケースのベースメニューを作成したいと思います。ユーザーが自分の選択を押した後に ENTER を押させたくありません。
c - Ctrl-C が getchar() に食われる
私は自分の問題の解決策を長い間探していたので、あなたに頼っています:
次のコードを検討してください。
予想される動作: ユーザーが q を入力して Enter すると、プログラムは終了します。CTRL+が押されるとC、フラグ「done」を 1 に設定してプログラムを終了する sigHandler 関数によって捕捉されます。
観察された動作: CTRL+C文字は getchar() 呼び出しによって食べられ、sigHandler 関数は実行されません。CTRL+をC押してから Enter を押すと、sigHandler 関数が呼び出され、プログラムが終了します。
より多くの経験と知識を持っている人が私を助けてくれますか?
ご意見ありがとうございます:)
c - while(getchar() != 複数の引数)
getchar を while ループの条件として使用し、(c=getchar()) = EOF または '\n' または '\0' の場合に終了させる方法。
私は試した:
入力した場合: WEATHER(+enter)。ループを終了しませんでした。
どうすればこれを機能させることができますか?
教えて
c - C ユーザー入力の検証 - int に変換される 1 文字のみが必要
C でユーザー入力を取得する際に問題があります。最初の数字のみを取得したいです。ユーザー入力を文字からフィルタリングしますが、2桁(間違ったユーザー入力)を入力すると、プログラムが奇妙に動作し始めます
次のように表示されます。
問題は何ですか?
c - この入力を処理する方法は?
データが次のように入力される方法を特定しようとしています。
名前と整数が入力され、改行が検出されるたびに、その名前と整数で処理が行われ、「.」まで何度も何度も実行されます。が検出されます。
たとえば、getchar()
ループと IF ステートメントを検出してみましたが、どれも機能していないようです。'\n'
何か案は?