2017-10-10 64 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

如果文件未能打開,則會使pFile等於NULL,這很容易導致fgetc()發生段錯誤。

試圖從文件讀取之前,必須檢查此:

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

這解決了我的問題,謝謝。 –

+1

使用'perror'或'strerror(errno)' –

+0

@BasileStarynkevitch哦,矯枉過正!當然,爲什麼不::) – unwind

1

改變你的代碼

int i; 
FILE *pFile; 

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

if(!pFile) 
    return; 

還..看起來像你的文件路徑是錯誤的......是你的意味着您的當前目錄或絕對路徑的一部分

+1

在'fopen'失敗時使用'perror' –