分段错误(文件位于C上)

分段错误(文件位于C上),c,C,我想创建一个名为module_extension/user.txt的文件: #include <stdio.h> #include <string.h> int main(int argc, const char * argv[]) { char example[100]; char user[100]="user"; char str[]="module_extension/"; FILE* fichier=NULL;

我想创建一个名为module_extension/user.txt的文件:

    #include <stdio.h>
    #include <string.h>

int main(int argc, const char * argv[])
{

   char example[100];
   char user[100]="user";
   char str[]="module_extension/";
   FILE* fichier=NULL;


   strcpy(example,str);
   strcat(example,user);
   strcat(example,".txt");
   fichier=fopen(example,"a+");
   fprintf(fichier,"**************New Line************ \n");
   fclose(fichier);

   return 0;
}

人们试图在评论中指出的是。当进行系统调用时,应该检查返回值,以确保它是否成功执行。在您的情况下,
open
系统调用可能会失败,原因有很多。在这种情况下,变量
fichier
中的文件描述符无效。使用它会导致出现
seg故障
,您将得到该故障

    #include <stdio.h>
    #include <string.h>

int main(int argc, const char * argv[])
{

   char example[100];
   char user[100]="user";
   char str[]="module_extension/";
   FILE* fichier=NULL;


   strcpy(example,str);
   strcat(example,user);
   strcat(example,".txt");
   fichier=fopen(example,"a+");
   if( fichier != NULL)
   {
       fprintf(fichier,"**************New Line************ \n");
       fclose(fichier);
   }
   else
       printf("File open failed");

   return 0;
}
#包括
#包括
int main(int argc,const char*argv[]
{
字符示例[100];
字符用户[100]=“用户”;
char str[]=“模块_扩展/”;
FILE*fichier=NULL;
strcpy(例如str);
strcat(例如,用户);
strcat(例如“.txt”);
fichier=fopen(例如,“a+”);
if(fichier!=NULL)
{
fprintf(fichier,“****************新线***************\n”);
fclose(fichier);
}
其他的
printf(“文件打开失败”);
返回0;
}

这样,即使在系统调用失败时,您也可以使程序防故障。

您是否检查了
fopen
的结果?当然你没有…我没有这个文件,它不是被创建的。“result”=返回值。因此,除了
fopen
(你应该检查一下)、
fprintf
fclose
之外,扔掉所有东西。您必须先隔离问题,然后才能修复它。那么您希望
fopen
如何在不存在的目录中创建文件呢?
    #include <stdio.h>
    #include <string.h>

int main(int argc, const char * argv[])
{

   char example[100];
   char user[100]="user";
   char str[]="module_extension/";
   FILE* fichier=NULL;


   strcpy(example,str);
   strcat(example,user);
   strcat(example,".txt");
   fichier=fopen(example,"a+");
   if( fichier != NULL)
   {
       fprintf(fichier,"**************New Line************ \n");
       fclose(fichier);
   }
   else
       printf("File open failed");

   return 0;
}