gpt4 book ai didi

Python和C文件同时读/写

转载 作者:行者123 更新时间:2023-11-30 18:00:54 29 4
gpt4 key购买 nike

我有一些 C 代码,我用 Python 对其进行了扩展。扩展的 C 代码有一个将一些结构附加到二进制文件的函数:

void writefunction(const struct struct1* some,const u_char* struct2){
f=fopen('save.bin',"ab");
if(f==NULL){
printf("Unable to open file");
exit(-1);
}
fwrite(some,sizeof(struct struct1),1,f);
fwrite(struct2,sizeof(u_char),4,f);
fclose(f);
}

现在我已经在Python中导入了代码。我想在Python中启动两个线程:一个将运行这个writefunction(),另一个将读取同一个文件。 write 函数在一个线程中工作正常,但从文件读取的 Python 函数无法工作。

我做错了什么?

最佳答案

不要这样做。

这里的问题是,“save.bin”文件的内容取决于您正在使用的 C 编译器 - 也可能取决于您传递给编译器的某些命令行参数。

结构struct1如何在内存中内部保存取决于编译器 - 至少在使用位域时;编译器也可能会添加填充(请参见下面的示例)。您将内部内存结构写入文件。

如果您想与用不同语言编写的程序(并且可能在不同服务器上运行)交换数据,您应该使用某种“线路”(序列化)协议(protocol)来转换它们。

建议:也许选择 JSON 或 XML。

填充结构的示例:

#include <stdio.h>

struct struct1 {
char a;
long b;
};

int main() {
printf("%d %d %d\n", sizeof(char), sizeof(long), sizeof(struct struct1));
return 0;
}

一种可能的输出是:

1 8 16

关于Python和C文件同时读/写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10151055/

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