0
#define MAX_BUFF_SIZE   64
char input[MAX_BUFF_SIZE];

int inSize = read(0, input, MAX_BUFF_SIZE);
if(inSize <= 0 || inSize > MAX_BUFF_SIZE){
     printf("An error occurred in the read.\n");
     exit(-1);
}

ユーザーに入力を促すプログラムを作成していますが、この入力の最大サイズは 64 文字です。ユーザーが 64 文字を超える文字を入力した場合、プログラムは終了する必要があります。

私はread()正しく使用していると信じていますが、64文字を超えてもエラーや例外が発生することはありません。ここで何が間違っていますか?

ユーザーが read() で 64 文字を超えて入力したかどうかを確認する方法はありますか?

4

1 に答える 1

2

read()許可された量よりも多くのバイトを読み取ることはありません。最大 64 バイトを読み取るように指示すると、使用可能なデータがさらにある場合でも、最大 64 バイトが読み取られます。まだ読み取られていないバイトは、さらに読み取ることができます ( inputisSTDIN_FILENOであると仮定します。この場合、それらは単に stdin バッファーに残されます)。

于 2013-03-29T07:57:44.830 に答える