我有一个二进制文件,其大小为(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);
}
但是,我收到一条警告,指出oper可能未初始化使用。
答案 0 :(得分:0)
首先,将char *oper
更改为char oper
。它不应该是指针。
我建议改用fread
。它只是读取固定数量的字节。替换为while:
while(1 == fread(&key, sizeof key, 1, fpin) &&
1 == fread(&oper, sizeof oper, 1, fpin)) {
// Print the values
}
我建议打印到标准输出,直到获得所需的结果。只是更改fpout。
但是,请记住,您的代码不可移植。整数的大小可能因计算机而异。