在写入模式下以C打开文件

时间:2016-02-25 23:48:11

标签: c file-io binaryfiles

我正在编写一个将文本文件转换为二进制文件的C程序,反之亦然。我的第一个问题是关于以“w”模式打开文件。是否需要检查输出文件是否正确打开?

FILE *output;
output = fopen("output.bin", "w");
if(output == NULL)
    { printf("Error opening output file\n");}

基本上我的问题是输出是否真的== NULL。因为如果打开输出有问题,它不会只创建一个名为“output.bin”的新文件吗?

另外我的另一个问题是字符实际上是如何保存在二进制文件中的。我知道我应该将每个字符保存为unsigned char,因此它可以具有0到255之间的值,然后我应该将该char写入输出文件。如果有人可以帮助我或指出我正确的方向,那么实际发生的逻辑路径是没有意义的我会很感激!

1 个答案:

答案 0 :(得分:3)

是的,在写入模式下打开文件可能仍会失败。这里有一堆可能的原因,但肯定不是唯一的原因:

  • 您无权创建或更改文件。
  • 该文件是只读的,或者它所在的目录是只读的。
  • 该文件将在另一个文件中。 (test/foo如果test是文件而不是目录)
  • 文件系统没有空间或inode(在具有固定数量inode的文件系统上)
  • 用户已达到磁盘空间配额。
  • 该文件将在另一台计算机上,网络已关闭。
  • 文件名无效 - 例如Windows上的C:/???*\\\\foo
  • 文件名太长了。