代码之家  ›  专栏  ›  技术社区  ›  Med Wajih Souilem

用我选择的特定路径编写

  •  -1
  • Med Wajih Souilem  · 技术社区  · 8 年前

    我正在Linux上编写一个简单的代码,将其写入一个文件。该文件将存储在特定路径中(与可执行文件所在的路径不同)。问题是,当我执行代码时,程序终止为 分段故障(堆芯转储)

    这是我的代码:

    #include <stdio.h>
    
    int main ()
    {
      FILE * pFile;
      char buffer[] = { 'x' , 'y' , 'z' };
      pFile = fopen ("/home/medwajih/Desktop/bufferfile/buffer.txt", "wb");
      fwrite (buffer , sizeof(char), sizeof(buffer), pFile);
      fclose (pFile);
      return 0;
    }
    

    非常感谢。

    1 回复  |  直到 8 年前
        1
  •  0
  •   paxdiablo    8 年前

    如果 fopen 失败(例如 /home/medwajih/Desktop/bufferfile 目录不存在,或文件存在但具有不允许您替换它的权限),然后 pFile 将设置为NULL。

    试图使用它则是未定义的行为。

    你通常应该 检查 所有可能无法确保稍后不会引起问题的呼叫,例如:

    pFile = fopen ("/home/medwajih/Desktop/bufferfile/buffer.txt", "wb");
    if (pFile == NULL) {
        fprintf (stderr, "Could not create file\n");
        return 1;
    }
    

    如果问题 实际上,该目录不存在,您可以调用 mkdir 预先当然,还要检查其返回值:-)

    如果是其他问题(问题中没有足够的信息来确定它是什么),你需要找到一种不同的方法来纠正问题。