Lecture et ecriture d'une image pgm en C
Résolu/Fermé
Utilisateur anonyme
-
Modifié par crapoulou le 22/01/2016 à 21:32
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 23 janv. 2016 à 16:27
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 23 janv. 2016 à 16:27
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
- Image iso - Guide
- Comment agrandir une image - Guide
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
23 janv. 2016 à 00:31
23 janv. 2016 à 00:31
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.