Seg Fault在fopen / fclose上

问题描述

| 我有一个程序正在创建多个文件。每个创建的文件都有一个功能。每个函数中都有完全相同的代码来创建文件名,打开/创建文件以进行写入,设置其权限并最后关闭文件。我决定创建一个用于打开文件和关闭文件的函数,这样我就可以调用它,而不必每次都使用相同的代码。每个函数以前的代码如下所示:
void WriteFile1(char *name) {
   FILE *file;
   char *filename; //This is being malloc\'ed because it initially consisted of multiple strings

   if (!(filename = malloc(sizeof(char *) * (strlen(name) + 1)))) MallocError();
   if (!(file = fopen(filename,\"w\"))) {
       fprintf(stderr,\"Unable to open %s. Exiting \\n\",filename);
       exit(1);
   }
   fchmod(fileno(file),S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH);

   //a bunch of fprintf statements here

   if (fclose(file)) {
       fprintf(stderr,\"Error closing %s. Exiting...\\n\",filename);
       exit(1);
   }
}
这工作得很好。我没有问题。现在看起来如下:
void WriteFile1() {
FILE *file;

OpenFile(file,\"filename.asdf\");
//fprintf statements
CloseFile(file,\"filename.asdf\");
}

void OpenFile(FILE *file,char *name) {
   if (!(file = fopen(name,\"w\"))) {
      fprintf(stderr,\"Unable to open %s. Exiting... \\n\",name);
      exit(1);
   }
   fchmod(fileno(file),S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH);
}
void CloseFile(FILE *file,char *name) {
    if (fclose(file)) {
        fprintf(stderr,name);
        exit(1);
    }
}
当我进入WriteFile1()中的第一个fprintf语句时,它就会出现故障。我使用FILE变量做错了什么吗?似乎它应该像以前一样工作。唯一的区别是文件名字符串的malloc,我改为将其作为名称传递并在引号中给出实际值。 谢谢     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)