我有一个二进制文件('''simdisk.bin''我在"r"模式下打开它,阅读它没有问题。现在,我想以二进制模式 (rb+( 打开它以二进制写入和读取,但我得到一个 nill 指针。
我制作了一个test.c文件来尝试使用这个主要文件:
int main(int argc, char const *argv[])
{
fp = fopen("simdisk.bin", "rb+");
printf("Ptr: %pn", fp);
fclose(fp);
}
我的猜测是你没有写入文件的权限,这是你使用+
修饰符请求的,它与二进制的东西(b
修饰符(无关。
试试这个,它会告诉你它无法打开文件的原因 - 找不到?没有权限?等等。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
int main(int argc, char *argv[])
{
FILE *fp = fopen("simdisk.bin", "rb+");
if (fp == 0)
{
printf("Cannot open file: error=%sn", strerror(errno));
exit(EXIT_FAILURE);
}
printf("Ptr: %pn", fp);
fclose(fp);
return EXIT_SUCCESS;
}
您还可以通过将模式更改为"rb"
- 它想要读取+二进制但不更新 - 它可能会正常工作,因为您不要求写入文件。
实际上我没有权限在上面写。我不得不更改权限:"chmod 777 simdisk.bin"。
谢谢!