2017-10-10 109 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' –