gpt4 book ai didi

c++ - 将结构写入文件会给我错误的结果

转载 作者:太空宇宙 更新时间:2023-11-04 15:14:50 25 4
gpt4 key购买 nike

我正在尝试写入一个命名管道(因此我们可以说它是一个文件)。

我正在将此结构写入我的文件:

struct ProcessData
{
int _processNumber;
int _threadStatus;
};

processNumberthreadStatus 被初始化为 0。

我是这样写我的结构的:

  if (write(this->_fd, &data, sizeof(ProcessData)) == -1)
{
std::cerr << "Write failed" << std::endl;
exit(EXIT_FAILURE);
}

并以这种方式阅读:

#define MAX_BUF 1024

int main()
{
int fd;
char * myfifo = "/tmp/the_plazza";
char buf[MAX_BUF];

/* open, read, and display the message from the FIFO */
fd = open(myfifo, O_RDONLY);
read(fd, buf, MAX_BUF);
printf("Received: %s\n", buf);
close(fd);

return 0;
}

但是我收到的输出不好:

 /tmp  ./a.out | hexdump 
0000000 6552 6563 7669 6465 203a 000a
000000b

知道为什么吗?

最佳答案

你不能打印二进制结构的值,就好像它是一个字符串一样。而且您不需要读入中间缓冲区。直接读入你的类型的变量:

  ProcessData val;
fd = open(myfifo, O_RDONLY);
read(fd, &val, sizeof(val));
std::cout << val._processNumber;

关于c++ - 将结构写入文件会给我错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36654854/

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