以写模式在C中打开文件

以写模式在C中打开文件,c,file-io,binaryfiles,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”的新文件吗 另外,我的

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

FILE *output;
output = fopen("output.bin", "w");
if(output == NULL)
    { printf("Error opening output file\n");}
基本上,我的问题是输出是否真的==NULL。因为如果打开输出时出现问题,它会创建一个名为“output.bin”的新文件吗


另外,我的另一个问题是,字符实际上是如何保存在二进制文件中的。我知道我应该将每个字符保存为无符号字符,这样它的值可以介于0和255之间,然后我应该将该字符写入输出文件。如果有人能帮助我或为我指出正确的方向,那么这种情况发生的实际逻辑路径是没有意义的,我将不胜感激

是,以写模式打开文件可能仍然失败。以下是一些可能的原因,但肯定不是唯一的原因:

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

您所说的“将文本文件转换为二进制文件,反之亦然”到底是什么意思?“是否需要检查输出文件是否正确打开”。是的,您需要检查返回值。至少这是一种良好的做法。当然,开放的失败有很多原因。例如,没有在当前目录中创建文件的权限。或者文件已经存在,但不可写。'试图理解二进制文件是如何存储和表示的'-哦,相信我,这很简单:)处理异常的是“文本文件”。我相信每个问题应该有一个问题。在尝试创建二进制文件时,应该使用“wb”而不是“w”,如果此代码在Windows系统上运行。