問題タブ [getc]
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 でユーザー入力をトークン化 (**arg に格納)?
私は単純なシェルのようなインターフェイスを作成しようとしています。これは、ユーザー入力を (char で) 受け取り、ポインター * へのポインターを介して格納します (argv の動作とまったく同じです)。これが私のコードです:
argvInput をループすると、次のようになります。
argvInput[i] のすべての値は、最後の入力割り当てが何であれです。したがって、「幸せな日々がもうすぐ来る」と入力すると、ループの出力は次のようになります。
私は途方に暮れています。明らかに、各ループは以前の値を上書きしていますが、私は画面を見つめていて、理由がわかりません...
perl - Term::ReadKey::ReadKey が「0」を返すとはどういう意味ですか?
Linux ターミナルでdumpkeys --long-info
呼び出すと、次の値が得られます。
このスクリプトを実行してCtrl a
またはCtrl b
を押すと、対応する値が得られます。return
を押すと.
このnullは、それが値であることを意味しますか、それとも設定されていないか空の何かがあることを意味しますか?Ctrl Space
ReadKey
0
Ctrl Space
c - リンクされたリストを作成するためのユーザー入力
私は ac 99 プログラミング クラスのプロジェクトを持っています。このプロジェクトでは、ユーザーに文を要求し、その文を 1 文字ずつ取得して、各文字を個別にリンク リストに格納する必要があります。getc() と while ループを使用して文を読み、リンクされたリストに格納する必要があると言われました。
これまでのところ、getc が "\n" に遭遇するまで while ループが必要であることはわかっています。それ以外は、どこから始めればよいかさえわかりません。このプロジェクト以外に、このクラスで問題が発生したことはありません。
これを行うためのアプローチまたはその他の方法に関するヘルプは、非常に高く評価されます。
c - getcでファイルから読み取るときに文字をチェックする
次のコードでは、ファイルからすべての文字 (改行を含む) を保存しようとしています。改行が読み取られた場合、変数 'i' をインクリメントし、'j' を 0 にリセットする必要がありますが、これは起こりません。配列からコンソールに出力することで、改行が実際に読み取られて保存されていることを確認しました。
c - char 変数に格納された getc の戻り値
このウィキペディアのページには、ファイルから最初の 5 バイトを読み取って出力するサンプル C プログラムがあります。
私が理解していない部分はgetc
、 を返し、それを s のint
配列に格納する関数を使用することchar
です - どうすればint
s をchar
配列に格納できますか?
c - stdin の getc() をバイナリにする方法
ファイルハンドルから読み取るために getc() で while ループを使用していますが、正常に動作します。現在、パイプのサポートを追加しています。
私の問題は、x0A、X0D、および x0A0D は問題なく通過しますが、x0D0A のケースはすべて x0A に縮小されることです。また、x1A に遭遇するとプロセスが完全に停止するようです。
tar の出力をパイピングしていて、ファイルがめちゃくちゃになっています。
FH はファイルまたは標準入力のいずれかを指す必要があるため、これは単純化されています。テストのために、変更を確認するためにバフをファイルに書き出すだけです。FH がファイルの場合、コードは完全に機能します。
パイプ ソースとして tar、type、および cat を使用した場合と同じ動作を見てきました。
c - ftell が正しくない値を返す
ftell が間違った値を返すという問題が発生しています。私のコードは、Linux の netbeans で実行すると正しく報告されますが、まったく同じコードを Windows の netbeans で (mingw を使用して) 実行すると、正しく報告されません。ファイル ポインタは、BINARY_READ で開かれたファイルへのポインタです。Linux の NetBeans では、サブルーチンを実行した後、ftell は 35 を報告します。私の Windows の NetBeans では、同じサブルーチンを呼び出した後、ftell は 3621 です。サブルーチンをトレースしたところ、次のステートメントが問題を引き起こしているようです。
私の Linux ネットビーンズでは、このステートメントの後の ftell(fp) は 1 になりますが、私の Windows ネットビーンズでは、このステートメントの後の ftell(fp) は 3585 です。
問題の原因は何ですか?
c - 「副作用のある式」をgetcに渡すにはどうすればよいですか?
「UNIX 環境での高度なプログラミング、第 3 版」、151 ページ:
getc
との違いはfgetc
、マクロとして実装できるgetc
のに対し、 はマクロfgetc
として実装できないことです。これは、次の 3 つのことを意味します。
- への引数は、副作用のある式であって
getc
はなりません。fgetc
関数であることが保証されているため、そのアドレスを取得できます。これにより、 のアドレスをfgetc
引数として別の関数に渡すことができます。- 関数の呼び出しには通常より時間がかかるため、 への呼び出しは への呼び出し
fgetc
よりもおそらく時間がかかります。getc
ストリーム ポインターをパラメーターとして使用する関数シグネチャに対して、どのような「副作用のある式」が発生する可能性がありますか?