【问题标题】:How to convert a binary file to a text file, containing ints and chars如何将二进制文件转换为包含整数和字符的文本文件
【发布时间】:2019-08-07 16:32:31
【问题描述】:

我有一个二进制文件,其大小为 (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 可能未初始化。

【问题讨论】:

    标签: c linux file


    【解决方案1】:

    首先,将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。

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

    【讨论】:

    • @Dipstick 所有文件都是二进制文件。
    • @Dipstick No :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 2014-04-05
    • 2013-08-20
    相关资源
    最近更新 更多