Lecture et ecriture d'une image pgm en C

Lecture et ecriture d'une image pgm en C - C - Programmation

Marsh Posté le 21-01-2016 à 01:04:10    

.


Message édité par aragaj le 25-01-2016 à 03:20:59
Reply

Marsh Posté le 21-01-2016 à 01:04:10   

Reply

Marsh Posté le 21-01-2016 à 14:08:11    

Le "prblm", à part la mise en page, est que tu n'as apparemment pas activé les warnings de ton compilateur.

 

f.c:11:1: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'char (*)[21]' [-Wformat]
f.c:22:1: warning: format '%c' expects argument of type 'char *', but argument 3 has type 'int' [-Wformat]
(les numéros de lignes ne correspondent pas)

 

ligne 15: fscanf(fo,"%s %d %d %d",<pas de & ici!>nom,&nbc,&nbl,&max);
ligne 38: fscanf(f,"%c",<pas de * ici!>Image+i*nbc+j);

 

Après un fopen() faut vérifier le résultat (!=NULL).
Quand je crées un fichier pgm avec IrfanView il y a une ligne de commentaire après le P5 qui fait échouer le programme, mais je ne sais pas si c'est autorisé par le standard de mettre un commentaire. À voir.
Ton programme plante, je suppose dans la boucle de lecture, à toi de debugger (probablement un accès en dehors de l'espace mémoire alloué).

 

edit: ???? Pourquoi tu reouvres ton fichier? Comme tu as effacé en plus le nom ça donne n'importe quoi. Copier-coller des bouts de code ce n'est pas la bonne méthode. Vas-i doucement étape par étape après avoir testé l'algo avec papier et crayon. Et n'hésite pas de consulter ton cours de C!


Message édité par rat de combat le 21-01-2016 à 14:14:13
Reply

Marsh Posté le 21-01-2016 à 20:18:34    

.

Message cité 1 fois
Message édité par aragaj le 25-01-2016 à 03:21:21
Reply

Marsh Posté le 21-01-2016 à 21:52:20    

aragaj a écrit :


j aimerais savoir comment est ce que je peux activer les alertes dans dev-C++  


Il faut rajouter -Wall aux options du compilateur gcc. Pour savoir comment faire ça sous Dev-C++ tu dois consulter l'aide ou un moteur de recherche... Je suppose que Dev-C++ est imposé par le prof? De mémoire c'est plutôt ancien, j'utiliserais plutôt Code::Blocks (ou carrément la ligne de commande mais pour un débutant c'est pas top).
 

Citation :

voilà mon nouveau code.


Ce n'est pas encore gagné.
 

Citation :

Nb: ce n'est pas du copier coller.


Je ne voulais pas dire que tu copies du code d'internet, mais j'ai l'impression que déplaces tes morceaux de code (à toi) plus ou moins aléatoirement plutôt que de refléchir. Si tu avais suivi mon conseil à savoir faire l'algo sur du papier d'abord tu n'aurais pas fait l'erreur d'ouvrir le fichier deux fois. De même dans le nouveau code, lors de l'appel de malloc() nbc et nbl ne sont pas initialisés, ce qui donnera forcément des bêtises. Aussi tu ne testes toujours pas la valeur de retour de fopen().
 
Active donc déjà les warnings, corrige les et reposte ton nouveau code. Ensuite on vera pour les autres erreurs.
 
Ah oui, tu fais du C alors ton fichier doit porter l'extension .c. Ainsi il sera compilé comme du C (et du coup tu n'as pas besoin de faire un cast sur la valeur que retourne malloc()). Et dans un fichier .h on mets que des prototypes de fonctions, le code en soi va dans les fichiers .c. Ici c'est un petit programme, sauf obligation contraire je te conseille de tout mettre dans un seul fichier main.c:
-include des bibiliothèques standards
-prototypes des fonctions lire() et save() [pourquoi save d'ailleurs si ton code est en français?]
-la fonction main()
-les fonctions lire() et save()

Reply

Marsh Posté le 27-01-2016 à 16:27:29    

C'est quoi cette [...] d'effacer tes messages? Faut pas que le prof les trouve c'est ça?

Reply

Marsh Posté le 27-01-2016 à 16:44:17    

C'est malheureusement bien possible ... :(

Reply

Marsh Posté le 27-01-2016 à 19:53:37    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed