2014-01-07 5 views
0

나는 내 ansi 코드에서 몇 가지 문제로 고심하고있다. PPM 그림 (P6)을 읽고 컬러 (int) 배열에 쓰고 싶습니다. 모든 것이 훌륭하게 작동해야하지만 불행히도 그렇지는 않습니다.Ansi C가 PPM 파일 freez에서 읽음

문제는 매번 같은 지점에서 읽기가 멈추는 것입니다. - 모든 확인되기 전에

int **red,**blue,**green; 
    //... Some code, allocations etc. 
    static unsigned char a[3]; 
    for(i = 0; i < x; i++) 
    { 
      for(j = 0; j < y; j++) 
      { 
       fread(a, 1, 3, pic); 
       red[i][j] = a[0]; 
       //green[i][j] = a[1]; 
       //blue[i][j] = a[2]; 
      } 
    } 

이 값이 미친지고 24 읽

읽기위한 코드입니다. 이 값은 빨간색으로 표시되고 루프가 끝날 때까지 24입니다.

나는 여기에 무슨 일이 일어나고 있는지 알지 못합니다. 그래서 이것은 여러분에게 몇 가지 조언을 구하는 것입니다 - 여기에 무엇이 잘못 될 수 있으며 어떻게 고칠 수 있습니까?

red = (int **)malloc(sizeof(int*) * x); 
green = (int **)malloc(sizeof(int*) * x); 
blue = (int **)malloc(sizeof(int*) * x); 

for (i = 0; i < x; i++) 
{ 
     red[i] = (int*)malloc(sizeof(int) * y); 
     green[i] = (int*)malloc(sizeof(int) * y); 
     blue[i] = (int*)malloc(sizeof(int) * y); 
} 

EDIT2 :

,745,151 :

X가 473 Y 600

EDIT3이다

EDIT

이 내 졌는가

Dropbox에 내 소스 코드가 포함 된 그림 (이번에는 다른 내용)을 업로드했습니다 : code. 다른 그림에도 불구하고 그것은 여전히 ​​어떤 시점에서 멈춘다. 이번에는 70입니다.

+0

'int ** read' 또는'int ** red'? –

+0

빨강, 파랑 및 녹색을 어떻게 할당 했습니까? – cup

+0

루프 변수가 거꾸로되어 있습니다. 외부 루프는 0에서 Y까지 카운트해야하고 내부 루프는 0에서 X까지 카운트해야합니다. – BitBank

답변