2017-10-10 3 views
-3
#include <stdio.h> 
#include <stdlib.h> 

struct fileIndex{ 
    char name; 
    int key; 
} index1; 

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

    int i; 
    FILE *pFile; 

    pFile= fopen("cat/home/sysadmin/deneme.txt","r"); 



    for(i=0; i<10; i++){ 
     printf("%c",fgetc(pFile)); 
    } 
    fclose(pFile); 

} 

私のプログラムを実行したいとき、エラーが発生します。私は間違った行のコードで長い間見ましたが、私は何も見つかりませんでした。手伝って頂けますか ?LinuxでC-セグメンテーションフォルト(コアダンプ)エラーが発生しました

+0

コードをインデントしてください。そして、少なくとも 'fopen'のようなエラーを起こしやすい関数からの戻り値をチェックしてください。 –

+0

あなたは '' popen'(http://man7.org/linux/man-pages/man3/popen.3.html)の機能を望んでいるようですが、 '' fopen''ではありません。そして、コマンド( 'cat')とその引数の間にスペースを入れます。 –

+1

このパス( 'cat/home/sysadmin/deneme.txt')は正しいですか?私は '/ home/sysadmin/deneme.txt'を意味すると思います。 –

答えて

3

ファイルが開けなかった場合、pFileNULLと等しくなり、容易にfgetc()がsegfaultになる可能性があります。

あなたはファイルから読み取るしようとする前にこれをチェックする必要があります。また

int i; 
FILE *pFile; 

pFile= fopen("cat/home/sysadmin/deneme.txt","r"); 

if(!pFile) 
    return; 

としてあなたのコードが..あなたがパスは紛失されたファイルのように見える...ある

if (pfile == NULL) 
{ 
    perror("Failed to open file"); 
    exit(1); 
} 
+0

これは私の問題を解決しました、ありがとうございます。 –

+1

'perror'や' strerror(errno) 'を使用してください –

+0

@BasileStarynkevitchああ、残酷!確かに、どうしてですか: – unwind

1

変更あなた意味はありません/cat/home/sysadmin/deneme.txt

cat現在のディレクトリまたは絶対パスの一部

+1

'fopen'の失敗時に' perror'を使います –

関連する問題