gpt4 book ai didi

c: 读入 int 不完整

转载 作者:行者123 更新时间:2023-12-01 13:50:22 25 4
gpt4 key购买 nike

我的程序分配了一个 32 位 int,随后尝试使用 read(2) 从套接字将 4 个字节读入 int

有时读取不完整并返回读取 2 个字节。有什么方法可以从中恢复吗?我想我必须在 int 的中途生成一个指针才能执行另一次读取。

你应该如何处理这种情况?我可以想象出几种丑陋的方式,但没有一种优雅的方式。

最佳答案

您首先需要确保已读取 4 个字节。您可以使用类似于 this 的函数来执行此操作一个(稍作修改):

#include <sys/types.h>
#include <sys/socket.h>

int readall(int s, char *buf, int *len)
{
int total = 0; // how many bytes we've read
int bytesleft = *len; // how many we have left to read
int n = -1;

while(total < *len) {
n = read(s, buf+total, bytesleft, 0);
if (n <= 0) { break; }
total += n;
bytesleft -= n;
}

*len = total; // return number actually read here

return (n<=0)?-1:0; // return -1 on failure, 0 on success
}

然后您可以使用这四个字节组合一个整数。

关于c: 读入 int 不完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32231434/

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