我有一个二进制文件('''simdisk.bin''')。我在“ r”模式下打开了它,并且阅读它没有问题。现在,我想以二进制模式(rb +)打开它以进行二进制写入和读取,但是我得到了一个nill指针。
我制作了一个test.c文件来尝试使用此主要工具:
int main(int argc, char const *argv[])
{
fp = fopen("simdisk.bin", "rb+");
printf("Ptr: %p\n", fp);
fclose(fp);
}
我的猜测是您没有权限对文件进行[[write,这是您使用+
修饰符所要求的,而与二进制文件无关(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=%s\n", strerror(errno));
exit(EXIT_FAILURE);
}
printf("Ptr: %p\n", fp);
fclose(fp);
return EXIT_SUCCESS;
}
您还可以通过将模式更改为"rb"
来进行测试-该模式需要读取+二进制文件但不更新-而且由于您不要求对文件进行[[write
,所以它可能工作得很好。