C -FILE I/O分段故障核心转储?

问题描述:

首先,请说明什么是分段错误(核心转储)。我正在Linux中创建一个程序,它将在系统目录中创建一个文件。我猜linux是造成这个问题。这里是代码。代码非常简单。不介意,但不知道如何创建简单的文件,我不能创建复杂的程序。C -FILE I/O分段故障核心转储?

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    FILE *fp; 
    fp = fopen("/samrat.txt", "r+"); 
    fprintf(fp, "this is a demo text"); 
    fclose(fp); 
} 

谢谢你的时间和考虑。不要忘记解释什么是分段错误,也是我的这个程序的解决方案。我也尝试过int main()

+4

检查fopen的返回值。 – BLUEPIXY

+0

@BLUEPIXY我很抱歉,它不是helo –

+0

在根目录下找到一个'.txt'文件是很不寻常的。 – EOF

首先,当Linux没有为某些东西(至少在我的情况下)分配空间,并且您尝试使用具有空值的指针时,Linux上出现了段错误,核心转储错误。在这种情况下,我认为这是因为你的fopen返回null。其次,r +首先用于读取,而不是写入。所以如果你还没有创建文件,你没有什么可读的。使用w或w +,这样它将首先创建你的文件。 最后但并非最不重要的是,尽量不要在文件名中使用'/'。

fp = fopen("/samrat.txt", "r+");替换为fp = fopen("samrat.txt", "w+");

查看此链接的更多文件opening modes in c