C - 二进制模式下的 FOPEN 将返回 null 到现有文件



我有一个二进制文件('''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"。

谢谢!

最新更新