C ++ fopen fwrite我选择的具体路径

时间:2017-11-18 09:49:58

标签: c fopen fwrite

我在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;
}

请注意,程序的exe位于&#34; / home / medwajih / Desktop /&#34;我想创建buffer.txt文件的位置是&#34; / home / medwajih / Desktop / bufferfile /&#34;

谢谢。

1 个答案:

答案 0 :(得分:0)

如果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。当然,也要检查它的返回值: - )

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