无法访问内存中的某个位置

标签 c file fread

我试图在 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/

相关文章:

c - 将空文件重定向为 C 中的输入

无法使用代码块创建数据文件

c - 简单的 C 程序不会返回数字的平方

c# - 锁定 AppendAllText 与 TextWriter

file - Windows 共享上的数据库查询表示模拟文件?

c - 读取() : Unable to read file for/proc/$pid/status

将行从标准输入复制到字符指针数组

c - 从文件中读取数字到C中的数组

r - 有没有比 fread() 更快的方法来读取大数据?

r - 没有读取功能吗?