gpt4 book ai didi

c - 一次从二进制文件中读取 2 个字节

转载 作者:太空狗 更新时间:2023-10-29 12:00:49 24 4
gpt4 key购买 nike

我有一个名为 example 的 elf 文件。我写了下面的代码,它以二进制模式读取示例文件的内容,然后我想将它们的内容保存在另一个名为 example.binary 的文件中。但是当我运行下面的程序时,它显示了一个段错误。这个程序有什么问题?我无法找出我的错误。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// typedef macro
typedef char* __string;

//Function prototypes
void readFileToMachine(__string arg_path);


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

__string pathBinaryFile;

if(argc != 2){
printf("Usage : ./program file.\n");
exit(1);
}

pathBinaryFile = argv[1];

readFileToMachine(pathBinaryFile);

return EXIT_SUCCESS;
}

void readFileToMachine(__string arg_path){

int ch;
__string pathInputFile = arg_path;
__string pathOutputFile = strcat(pathInputFile, ".binary");

FILE *inputFile = fopen(pathInputFile, "rb");
FILE *outputFile = fopen(pathOutputFile, "wb");

ch = getc(inputFile);

while (ch != EOF){
fprintf(outputFile, "%x" , ch);
ch = getc(inputFile);
}

fclose(inputFile);
fclose(outputFile);

}

最佳答案

您没有空间将扩展名连接到路径,因此您必须为此创建空间。

一个解决方案可能是:

char ext[] = ".binary";
pathOutputFile = strdup(arg_path);
if (pathOutputFile != NULL)
{
pathOutputFile = realloc(pathOutputFile, strlen(arg_path) + sizeof(ext));
if (pathOutputFile != NULL)
{
pathOutputFile = strcat(pathInputFile, ext);


// YOUR STUFF
}

free(pathOutputFile);
}

旁注:typedef 指针不是一个好主意...

关于c - 一次从二进制文件中读取 2 个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37570863/

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