gpt4 book ai didi

c - 如何将二进制文件转换为包含整数和字符的文本文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:29 24 4
gpt4 key购买 nike

我有一个二进制文件,其大小是二叉树中节点数的 (sizeof(int)+sizeof(char)) 倍。 int 是存储在每个节点的数据,char 是到达文件中的该部分后执行的操作。 (i 用于插入,d 用于删除)我只需要知道如何将二进制文件转换为文本文件以进行测试。

输出应该是这样的:

10 i
9 i
14 i
12 i
9 d

到目前为止我的程序是这样的:

void convert(char * input, char * output)
{
FILE * fpin = fopen(input, "rb");
FILE * fpout = fopen(output, "w");

char * oper; // operation (either 'i' or 'd')
int key; // information to be held by a node

while ((fscanf(fpin, "%d%s", &key, oper) == 2) {
fprintf(fpout, "%d %s\n", key, oper);
}

fclose(fpin);
fclose(fpout);
}

但是,我收到一条警告,说 op 可能会在未初始化的情况下使用。

最佳答案

首先,将char *oper 更改为char oper。它不应该是一个指针。

我建议改用fread。它只是读取固定数量的字节。将 while 替换为:

while(1 == fread(&key, sizeof key, 1, fpin) &&
1 == fread(&oper, sizeof oper, 1, fpin)) {
// Print the values
}

我建议打印到 stdout 直到你得到你想要的结果。 fpout 的刚刚改变。

但是,请记住您的代码不可移植。 int 的大小因机器而异。

关于c - 如何将二进制文件转换为包含整数和字符的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55202185/

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