私は私はあなたがそれが何を意味するのか分からない疑いがあるものの、はい
、ここsdtin
に関連付けられたファイルディスクリプタを返すfileno
ことを知っています。
次にread
この値を変数i
に設定します。
なしなしなしなしなし号。 read()
ファイルディスクリプタの値またはその一部を指定されたバッファに入れます(この場合は、バイトはi
)。その名前が示唆するように、read()
は、への試み、のファイルの最初の引数として渡されます。読み込まれたバイトは、もしあれば、提供されたバッファに格納されます。
stdin
は、プログラムの標準入力を表します。インタラクティブシェルからプログラムを実行すると、キーボードに対応します。プログラムはユーザーの入力を読み込み、改行と比較しようとします。
プログラムに欠陥がある可能性がありますが、間違っている可能性がありますが、提示された断片だけでは分かりません。 i
がタイプint
の変数である場合、その表現は1バイトよりも大きいですが、1バイトだけを読み込んでいます。これは表現の1バイトのみを置き換え、結果はCの実装とデータの読み込みに依存します。どのようなプログラムがやろうとしているように見えるが
をread()
で動作させることができますが、私の代わりにgetchar()
を使用することをお勧めします:
#include <stdio.h>
/*
...
int i;
...
*/
i = getchar();
/* ... */
あなたは 'read'機能が何を知っていますか?表示されたコードの 'read'呼び出しを' stdin'から 'getchar'や' getc'や 'fgetc'を実行する簡単な方法と考えてください。あなたの質問はそれが意味を成しているかどうか、もしあれば'read'の代わりに使われた' getchar'ですか? –
申し訳ありません私の投稿を更新しました – HolyGraal
'i'の型は' char'(または 'signed char'または' unsigned char')でなければなりません。そして、入力中の未読の次のバイトは改行でなければなりません。 –