2016-11-19 8 views
-2

まず、セグメンテーションフォルト(コアダンプ)とは何かを教えてください。私はシステムディレクトリにファイルを作成する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

チェックの戻り値については、このリンクを。 – BLUEPIXY

+0

@BLUEPIXY heloはごめんなさい申し訳ありません –

+0

ルートディレクトリに '.txt'ファイルがあるのは珍しいことです。 – EOF

答えて

1

まず、何か(少なくとも私の場合)にスペースを割り当てなかったときに、セグメンテーションフォールト、コアダンプエラーがLinuxに表示され、null値を持つポインターを使用しようとしています。この場合、あなたのfopenがnullを返すためだと思います。 第2に、r +が最初に読み込み用であり、書き込み用ではありません。したがって、まだファイルを作成していない場合は、何も読み込めません。 wまたはw +を使用すると、ファイルが最初に作成されます。 最後に、ファイル名に '/'を使用しないでください。

0

fp = fopen("/samrat.txt", "r+");fp = fopen("samrat.txt", "w+");に置き換えます。

チェックアウトより多くのファイルのfopenのopening modes in c

関連する問題