如何解决从文本文件 c 中读取矩阵
在使用 gcc 编译时,我收到错误消息“分段错误(核心转储)”,但我找不到访问超出边界内存的点。我什至尝试只部分填充矩阵,但一如既往地成功读取文件中的所有值后,我收到相同的错误消息。读取最后一个元素后触发错误
#include <stdio.h>
#include <stdlib.h>
#define NR 4
#define NC 8
#define FILENAME "../debug.log"
int ndominanti(int [][NC],int);
int main(int argc,char * argv[]){
int info[NR][NC];
FILE * pf;
int i,j,ris;
if(pf = fopen(FILENAME,"r")){
for(i = 0; i < NR; i++)
for(j = 0; j < NC; j++)
fscanf(pf,"%d",&info[i][j]);
/* this is where the error occurs */
fclose(pf);
ris = ndominanti(info,NR);
printf("ris: %d\n",ris);
}else
printf("Errore apertura file %s\n",FILENAME);
return 0;
}
int ndominanti(int info[][NC],int nrighe){
int i,k,h;
int curr,ndom,nrighedim,ncoldim;
int isdom;
nrighedim = nrighe - 1;
ncoldim = NC - 1;
ndom = 0;
for(i = 0; i < nrighedim; i++)
for(j = 0; i < ncoldim; j++){
curr = info[i][j];
isdom = 1;
for(k = i + 1; k < nrighe && isdom; k++)
for(h = j + 1; h < NC && isdom; h++)
if(curr <= info[k][h])
isdom = 0;
if(isdom)
ndom++;
}
return ndom;
}
这里是debug.log文件的内容,每一行用CRLF分隔,单个元素用一个空格分隔,最后有一个CRLF
5 9 2 4 1 7 2 4
3 5 6 2 5 6 1 2
1 3 4 7 8 8 3 0
1 3 5 6 7 8 2 1
解决方法
对不起,我无法弄清楚问题所在,无论如何我都把它逼疯了
(2.2.1) to (2.2.0)
(= 1.0.2.20) to (= 1.0.2.19)
谢谢@kaylum
我没有检查函数,因为我认为问题出在 main 内部,因为在我在代码中标记的点之后(在我调用函数之前的方式)之后我无法执行任何命令
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。