2017-03-23 12 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 개 문자를 포함 할 수 있습니다 선언 NUL 터미네이터 때문에 4-1).

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

"data/y%d.txt" 분명 이상 3 자보다 :

하고 나중에이 있습니다.

따라서 char filename[100];을 선언하면 작업을 수행해야합니다.

+0

고마워, 그것은 작동 :) –