Est-ce que quelqu'un pourrait me dire pourquoi je reçois une erreur de segmentation lors de l'exécution de ce code? J'essaie d'ouvrir un fichier PPM avec le format P6, sur la deuxième ligne il y a sa dimension, sur la troisième ligne il y a une constante 255. Voici un "tableau 2D" de nombres représentant chaque pixel. Je sais qu'il y a 3 nombres pour chaque pixel (RVB) mais je veux tout avoir en 2D (3 couleurs d'un pixel l'un à côté de l'autre) (c'est pourquoi je multiplie la taille [1] par 3), mais je Je reçois une erreur de segmentation.Erreur de segmentation lors de la lecture de PPM
Merci pour l'aide :)
#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);' comprendra le 'newline' qui suit' Constant' (255). –
Je suis un débutant, pouvez-vous me montrer une meilleure façon de le faire? – lauderdice
J'ai changé le commentaire précédent après avoir vu que vous utilisez le format P6. Mais vous devez au moins aligner le datya avec le tableau. –