Lecture et ecriture d'une image pgm en C
Résolu
Utilisateur anonyme
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- Lire une image pgm en c
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire epub - Guide
- Lire fichier bin - Guide
- Supprimez les composantes rouge et verte de cette image. quel mot apparaît ? - Forum Word
- Comment lire un message supprimé sur whatsapp - Guide
2 réponses
Bonjour,
Trop d'erreurs pour te dire précisément d'où ça vient.
Corrige déjà ceci :
int main(){
Le bon prototype est : int main(void)
fscanf(fo,"%s %d %d %d",&nom,&nbc,&nbl,&max);
Il ne faut pas mettre de & devant nom. C'est déjà une adresse dans ce contexte...
Attention, cette ligne serait juste si les différentes valeurs étaient sur une même ligne ; ce qui n'est pas le cas ici. Donc, utilise autant de fscanf() que de lignes.
unsigned char *Image=( unsigned char*)malloc((nbl*nbc)*sizeof( unsigned char*));
Conventionnellement, la 1ère lettre d'un nom de variable est minuscule. Le cast est superflu et même déconseillé. Ce n'est pas sizeof(unsigned char*) mais plutôt sizeof(unsigned char). A noter que ça vaut systématiquement 1. Donc inutile. Et si c'est pour la portabilité : utilise plutôt sizeof *image
Pourquoi ne pas utiliser une matrice plutôt ? Ca serait plus simple.
Attention tu déclares des variables un peu partout. Normalement, on le déclare en début de scope...
L'indentation est irrégulière...
fprintf(f,"%c",*Image+i*nbc+j);
fprintf(f,"\n");
Le fprintf(f, "\n"); est mal placé. Il doit être dans la seconde boucle for...
Dis-nous si cela a changé quelque chose. Si non, reposte ton code corrigé et on reregardera.
Trop d'erreurs pour te dire précisément d'où ça vient.
Corrige déjà ceci :
int main(){
Le bon prototype est : int main(void)
fscanf(fo,"%s %d %d %d",&nom,&nbc,&nbl,&max);
Il ne faut pas mettre de & devant nom. C'est déjà une adresse dans ce contexte...
Attention, cette ligne serait juste si les différentes valeurs étaient sur une même ligne ; ce qui n'est pas le cas ici. Donc, utilise autant de fscanf() que de lignes.
unsigned char *Image=( unsigned char*)malloc((nbl*nbc)*sizeof( unsigned char*));
Conventionnellement, la 1ère lettre d'un nom de variable est minuscule. Le cast est superflu et même déconseillé. Ce n'est pas sizeof(unsigned char*) mais plutôt sizeof(unsigned char). A noter que ça vaut systématiquement 1. Donc inutile. Et si c'est pour la portabilité : utilise plutôt sizeof *image
Pourquoi ne pas utiliser une matrice plutôt ? Ca serait plus simple.
Attention tu déclares des variables un peu partout. Normalement, on le déclare en début de scope...
L'indentation est irrégulière...
fprintf(f,"%c",*Image+i*nbc+j);
fprintf(f,"\n");
Le fprintf(f, "\n"); est mal placé. Il doit être dans la seconde boucle for...
Dis-nous si cela a changé quelque chose. Si non, reposte ton code corrigé et on reregardera.