我正在编写一个小型套接字程序(GNU libc)。我有一个循环询问用户输入(例如“MSG>”)。当用户按下回车键时,消息被发送(当前发送到 localhost 上的服务器)。
无论如何,我想从标准输入读入一个字符缓冲区[256]。我目前使用的 fgets() 不能满足我的要求。我不确定如何编写代码,以便我询问用户然后一次获取 256 -1 个字节的数据,以便我可以通过几个 256 字节的字符串发送一个 1000 字节的 c 字符串。
编辑:添加代码
#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;
}