아무도이 코드를 실행할 때 세그멘테이션 오류가 발생하는 이유를 알려주십시오. 나는 P6 형식의 PPM 파일을 열려고하는데 두 번째 줄에는 차원이 있고 세 번째 줄에는 255 개의 상수가 있습니다. 아래는 각 픽셀을 나타내는 숫자의 "2D 배열"입니다. 나는 각 픽셀 (RGB)에 대해 3 개의 숫자가 있음을 알고 있지만 여전히 2D 배열 (3 픽셀 씩 서로 섞어서 사용) (3을 곱한 크기 [1])의 모든 것을 가지고 싶습니다. 세분화 오류가 발생했습니다. 도움을PPM을 읽는 동안 세그먼트 오류가 발생했습니다
감사합니다 :)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <unistd.h>
int main(int argc, char*argv[]){
char *fname = argv[1];
FILE* f = fopen(fname, "r");
char format[3];
int size[2];
//reading image format
fscanf(f,"%s", format);
printf("%s\n", format);
//reading size
fscanf(f,"%d %d", size, size+1);
printf("%d %d\n", size[0], size[1]);
//reading a constant - 255
int Constant=0;
fscanf(f,"%d", &Constant);
//mallocating a 2D array to store individual pixels
uint8_t **array=malloc (3*size[1]*size[0]*sizeof(uint8_t));
//reading pixels from file and storing into array
for(int i=0 ; i<size[1]; i++){
for(int j=0 ; j<size[0]*3 ; j++){
fread(array, size[0]*size[1]*3 , 1, f);
}
}
for(int k=0;k<size[1];k++){
for(int l=0; l<size[0]*3; l++){
printf("%d ", array[k][l]);
}
printf("\n");
}
return 0;
}
fread (array, size [0] * size [1] * 3, 1, f);는'Constant' (255) 다음에 오는'newline '을 포함 할 것이다. –
저는 초보자입니다. 더 좋은 방법을 보여줄 수 있습니까? – lauderdice
P6 형식을 사용하는 것을보고 나서 이전 설명을 변경했습니다. 그러나 적어도 datya 배열을 정렬해야합니다. –