以下 write() 被客户端正确接收:
char *foo = "ABC";
write(sock, foo, strlen(foo));
但是当我将 foo 字符串扩展到 4 或 5 个字符时,write() 会用垃圾填充该字符串,直到它有 6 个字符。获得额外填充的写入示例:
char *foo = "ABCD";
write(sock, foo, strlen(foo));
有人知道为什么会发生这种情况吗?
最佳答案
我怀疑与所有其他人一样,您正在读取连接另一端的字符并使用 printf()
打印它们,它期望 nul
终止字节序列,即字符串,因此可以像这样编写 nul
字节
write(sock, foo, 1 + strlen(foo));
或者你在哪里收到它,这样做
int count;
char array[LARGER_THAN_POSSIBLE_COUNT];
count = read(sock, array, sizeof(array));
if (count > 0)
fwrite(array, 1, count, stdout);
fprintf(stdout, "\n");
关于c - 当我的字符串有 4-5 个字符时,write() 会添加填充吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28587296/