私はcのプロキシサーバーで作業しています。fread と fgets をさまざまな場所で組み合わせて使用することはかなりありましたが、その違いを調整して理解したいと思います。次の例では、以前に fget を使用して成功した場所で fread を使用しようとしています。代わりに、サーバーが fread 行でハングします。違いは何ですか?また、プログラムがハングするのはなぜですか?
void HandleTCPClient(int clntSocket)
{
FILE *request = fdopen(clntSocket, "r");
char reader[2000];
size_t q; //typo before
while((q=fread(reader, 1, sizeof(reader), request))>0) { //hangs here!
printf("i read something!\n");
}
return;
}
ありがとう!!
編集:だから、「while((q=fread(reader, 1, 1, request))>0) {」という行を作成すると
画面全体に「何かを読みました」と表示されます...
これが何を意味するのかわかりません。それで、少なくともバッファのサイズの文字数がストリームに存在しない場合、 fread は文字通り何もしないというのは正しいでしょうか?