2017-03-23 26 views
0

我无法解决此错误,请帮助我,我错了,还请告诉我如何使用GNU调试器,因为当我使用它时,“1 .c不是可执行文件“发生错误。通过未正确声明数组检测到堆栈砸错误

这里是我的代码的ADT文件: - Sparse.c

这里是我的代码: -

char filename[4]; 
int i,j,vectorCount=0; 
refFile=fopen("x3.txt","r"); 
for(i=0; i<=100; i++){ 
    fscanf(refFile,"%f",&x[i].value); 
    x[i].row=i; 
    x[i].col=1; 
} 
for(i=1; i<=10; i++){ 
    sprintf(filename,"data/y%d.txt",i); 
    FILE *fptr=fopen(filename,"r"); 
    y=newSparse(100,1,0); 
    for(j=0; j<100; j++){ 
     fscanf(fptr,"%f",&y[j].value); 
     y[j].row=j+1; 
     y[j].col=1; 
    } 
    if(classCheck(x, y)==1){ 
     vectorCount++; 
    } 
} 
+0

请一次提出一个问题。 –

回答

3

您声明

char filename[4]; 

所以filename可以包含文件名长达3个字符( 4-1因为NUL终结者)。

,以后你有这样的:

sprintf(filename,"data/y%d.txt",i); 

"data/y%d.txt"超过3个字符明显延长。

因此宣布char filename[100];应该做这项工作。

+0

谢谢,它工作:) –