我试图在 C 中读取一个 32 字节的二进制文件,但是当我运行我的程序时,我不断收到“段错误(代码转储)”, 如果有人可以指出我哪里出错了来帮助我,那就太好了。 我的代码在下面:
int main()
{
char *binary = "/path/to/myfiles/program1.ijvm";
FILE *fp;
char buffer[32];
// Open read-only
fp = fopen(binary, "rb");
// Read 128 bytes into buffer
fread (buffer, sizeof(char), 32, fp);
return 0;
}
最佳答案
是因为路径。确保 "/path/to/myfiles/program1.ijvm"
指向现有文件。
您应该始终检查 fopen
的返回值。
\\Open read-only
fp = fopen(binary, "rb");
if(fp==NULL){
perror("problem opening the file");
exit(EXIT_FAILURE);
}
另请注意,您正在读取缓冲区中的 32 个字节,而不是评论中所说的 128 个字节。
关于无法访问内存中的某个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56568159/