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;


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

   return 0;
}

但是当我运行它时,我收到此错误消息:

Segmentation fault (core dumped)

最佳答案

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

    #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;
}

通过这种方式,即使系统调用失败,您也可以使程序防失败。

关于c - 段错误(文件位于 C 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32232635/

相关文章:

c - C 中二进制搜索的第一次和最后一次出现

c - 错误: comparison between a pointer and an integer

c - 启用 const 数组的部分

c - Minix - 将数据从系统调用地址复制回调用进程

c - 如何不使用指针直接访问内存地址?

python - opencl 和 pyopencl 中的行和列主要

c - 如何将指针中的值保存到 char 数组中?

c - 显示在输入的数字之前。 (C语言编程)

c - 如何在C中将十六进制值分配给堆内存

c - 将大量逻辑打包在单个 C 语句中有何优点和缺点?