小さなソケット プログラム (GNU libc) を作成しています。ユーザーに入力を求めるループがあります (例: "MSG>")。ユーザーが Enter キーを押すと、メッセージが送信されます (現在は localhost のサーバーに送信されます)。
とにかく、stdin から char バッファ [256] に読み込みたい。私は現在、私が望むことをしない fgets() を使用しています。256バイトのいくつかの文字列を介して1000バイトのc文字列を送信できるように、ユーザーに尋ねてから一度に256 -1バイトのデータを取得するようにコードを書く方法がわかりません。
編集:コードを追加
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFSIZE 256
int main(int argc, char *argv[])
{
char msg[BUFSIZE];
size_t msgLen;
msgLen = strlen(fgets(msg, BUFSIZE, stdin));
puts(msg);
// This simply checks whether we managed to fill the buffer and tries to get
// more input
while (msgLen == (BUFSIZE - 1))
{
memset (msg, '\0', BUFSIZE);
fread(msg, BUFSIZE, 1, stdin);
msg[BUFSIZE - 1] = '\0';
msgLen = strlen(msg);
puts(msg);
if (msgLen < (BUFSIZE - 1))
break;
}
return 0;
}