我想创建一个名称如下的文件: 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/