2013-10-16 1 views
0

좋아요. 그래서 FOR 또는 WHILE 루프를 사용하면 혼자서 작업 할 수 있지만 이후에 같은 유형의 루프를 입력하면 컴파일되지만 실행 후 오류가 발생합니다. "분할 오류 (코어 덤프)"또는 때때로 "버스 오류 코어 덤프 됨"2 개의 간단한 루프가 함께 작동하지 않습니다. 세그먼트 화 오류

지금 2 차원 배열을 사용하고 있습니다. 제네릭 매트릭스 프로그램을 만들어야합니다. 지금 코드는 입력 용입니다./*와 */사이에 루프 중 하나를 추가하면 나머지 루프는 정상적으로 작동합니다.

#include <stdio.h> 

int main() 
{ 
int i, j, k, l; //I, J for array matrix a, K, L for matrix b 
int a[i][j]; //matrix of size i by j 
int b[k][l]; 
int rowa=0, cola=0, rowb=0, colb=0; 
//rowa is ROW no. of array a and colb e.g Column no. for array b 

printf("size of matrix a: "); 
scanf("%d\n%d", &i, &j); //i is row, j is column 

printf("size of matrix b: "); 
scanf("%d\n%d", &k, &l); //k is row, l is column 


while (rowa < i) 
{ 
    while (cola < j) 
    { 
    statements 
    } 
statements 
} 

while (rowb < k) 
{ 
     while (colb < l) 
    { 
    statements 
    } 
statements 
} 

return 0; 
} 

그럼 어떻게해야합니까? 감사합니다

+0

당신은을 사용하여 시도 해 봤나 디버거? 리눅스 기반 시스템이라면'gdb'를 권하고 싶습니다. 그리고 들여 쓰기를 수정하십시오 :-) –

답변

5

당신은 정의되지 않은 동작 결과 초기화되지 않은 변수 사용 :

int i, j, k, l; //I, J for array matrix a, K, L for matrix b 
int a[i][j]; //matrix of size i by j 
... 
printf("size of matrix a: "); 
scanf("%d\n%d", &i, &j); //i is row, j is column 

당신은 ij 이전에 선언 a[i][j]에 초기화 할 필요를, 즉

printf("size of matrix a: "); 
scanf("%d\n%d", &i, &j); 
// initialize the matrix: 
int a[i][j]; 
+0

네, 고마워요. 이제 배열 초기화 전에 printfscanf를 배치하면 정상적으로 작동합니다. 논리적 인 것처럼 보입니다. – TREMOR