c语言打开文件出现分段故障,c fclose() 导致分段故障_segmentation-fault_开发99编程知识库...

我有一個製表符分隔的文本文件,我正在解析。 第一列包含 chrX 格式的字元串,其中 X 表示一組字元串,比如," 1"," 2"。 "x","y"。

這些都存儲在一個名為 chromosome的char* 中,因為該文件被解析。

文本文件按字母順序排序,換句話說,我將有一些行從"chr1"開始,然後是"chr2",等等。

在每個"chrX"條目,我需要打開另一個與此項關聯的文件:FILE *merbaseIn;

//loop through rows...

if (chromosome == NULL)

openSourceFile(&chromosome, fieldArray[i], &merbaseIn, GENPATHIN);

else {

if (strcmp(chromosome, fieldArray[i])!= 0) {//new chromosome

fclose(merbaseIn);//close old chromosome FILE ptr

free(chromosome);//free old chromosome ptr

openSourceFile(&chromosome, fieldArray[i], &merbaseIn, GENPATHIN);//set up new chromosome FILE ptr

}

}

//parse row

我有定義如下的函數 openSourceFile:void openSourceFile (char** chrome, const char* field, FILE** filePtr, const char *path) {

char filename[100];

*chrome = (char *) malloc ((size_t) strlen(field));

if (*chrome == NULL) {

fprintf(stderr,"ERROR: Cannot allocate memory for chromosome name!");

exit(EXIT_FAILURE);

}

strcpy(*chrome, field);

sprintf(filename,"%s%s.fa", path, field);

*filePtr = fopen(filename,"r");

if (*filePtr == NULL) {

fprintf(stderr,"ERROR: Could not open fasta source file %sn", filename);

exit(EXIT_FAILURE);

}

}

問題是,我的應用程序退出了從第一個染色體到第二個( 從 chr1 到 chr2 )的分割錯誤,我關閉了第一個染色體文件:fclose(merbaseIn);

我知道我沒有傳遞 fclose的空指針,因為直到分割錯誤,我正在從這個文件中讀取數據。 我甚至可以用一個條件包起來,但我仍然有錯誤:if (merbaseIn!= NULL) {

fclose(merbaseIn);

}

而且,我知道 openSourceFile 是( 至少對於 chr1,在設置 FILE*的第一個文件句柄時),因為我的應用程序解析 chr1 行,並正確地從 FILE* 源文件讀取數據。

這個 fclose 調用引起一個分段錯誤的原因是什麼?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值