2017-03-23 40 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

謝謝,它工作:) –