【问题标题】:C-Segmentation fault (core dumped) error in linuxlinux中的C-Segmentation错误(核心转储)错误
【发布时间】:2017-10-10 08:55:44
【问题描述】:
#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);

}

当我想运行我的程序时,它给出了那个错误。我在代码中寻找错误的行很久了,但我没有找到。你能帮助我吗 ?

【问题讨论】:

  • 请缩进您的代码。请至少检查容易出错的函数的返回值,例如fopen
  • 在我看来,您想要的是 popen 函数,而不是 fopen。然后在命令 (cat) 和它的参数之间添加一个空格。
  • 你确定这条路径 - cat/home/sysadmin/deneme.txt 是正确的吗?我猜你的意思是/home/sysadmin/deneme.txt

标签: c linux segmentation-fault


【解决方案1】:

如果文件打开失败,那会使pFile等于NULL,这很容易导致fgetc()出现段错误。

在尝试从文件中读取之前,您必须检查这一点:

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

【讨论】:

  • @BasileStarynkevitch 哦,矫枉过正!当然,为什么不::)
【解决方案2】:

把你的代码改成

int i;
FILE *pFile;

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

if(!pFile)
  return;

另外.. 看起来你的文件路径放错了... 你是故意的吗/cat/home/sysadmin/deneme.txt

cat是你的当前目录还是绝对路径的一部分

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多