gpt4 book ai didi

c - 读写系统调用返回乱码 (C)

转载 作者:行者123 更新时间:2023-11-30 17:17:33 26 4
gpt4 key购买 nike

我在服务器和客户端之间写入 2 个整数,但它们之间很困惑。客户写道:

char playerMove[3];
char oppMove[3];
write(sock, playerMove, 3);
printf("Waiting on Opponent's move.\n");
read(sock, oppMove, 3);
printf("this was Opponent's move: %s\n", oppMove);

而相关的服务器代码是

char playerMove[3];
read(socket1, playerMove, 3);
printf("First move is: %s", playerMove);

write(socket2, playerMove, 3);

终端显示客户端说

Waiting on Opponent's move.
this was Opponent's move: �D�K

但在服务器的终端中我可以清楚地看到它正确完成

First move is: 3 1

有人可以帮我吗?我是 C 语言新手。我需要做一些特殊的事情来向我的客户写“3 1”吗?

最佳答案

尝试如下所示的操作。这里缓冲区oppMove在使用之前设置为0。

char playerMove[3];
char oppMove[3];
memset(oppMove,'\0',3);
write(sock, playerMove, 3);
printf("Waiting on Opponent's move.\n");
read(sock, oppMove, 3);
printf("this was Opponent's move: %s\n", oppMove);

我还建议使用 Sourav Ghosh 指出的 4 字节长的缓冲区

关于c - 读写系统调用返回乱码 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29407244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com