以二进制模式打开将现有文件返回null

问题描述 投票:0回答:2

我有一个二进制文件('''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);
}
c fopen
2个回答
0
投票

我的猜测是您没有权限对文件进行[[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
,所以它可能工作得很好。

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.