我如何从一个连贯的二进制文件中切出一个二进制文件?

问题描述 投票:0回答:1

基本上,我在Linux上使用 "cat "命令合并两个二进制文件。我希望能够用C语言将它们分开,这是我目前得到的代码。

int main(int argc, char *argv[]) {

    // Getting this file 
    FILE *localFile = fopen(argv[0], "rb");

    // Naming a new file to save our carved binary
    FILE *newFile = fopen(argv[1], "wb+");

    // Moving the cursor to the offset: 19672 which is the size of this file
    fseek(localFile, 19672, SEEK_SET);

    // Copying to the new file
    char ch;
    while ( ( ch = fgetc(localFile) ) != EOF ) {
        fputc(ch, newFile);
    }
}
c binary concatenation fopen fseek
1个回答
1
投票

假设你已经知道第二个文件从哪里开始。你可以按以下步骤进行。(这是最基本的)

#include <stdio.h>
#include <unistd.h>

int main()
{
    FILE* f1 = fopen("f1.bin", "r");
    FILE* f2 = fopen("f2.bin", "w");

    long file1_size = 1;

    lseek(fileno(f1), file1_size, SEEK_SET);

    char fbuf[100];
    int rd_status;

    for( ; ; ) {
        rd_status = read(fileno(f1), fbuf, sizeof(fbuf));

        if (rd_status <= 0)
            break;
        write(fileno(f2), fbuf, rd_status);
    }

    fclose(f1);
    fclose(f2);
    return 0;
}

输入文件 -- f1.bin

1F 2A 

输出文件 -- f2.bin

2A

请根据你的例子修改文件名和文件大小。

© www.soinside.com 2019 - 2024. All rights reserved.