[langage C] PB Suppresion déf variables
Résolu/Fermé
Bergie
-
25 sept. 2006 à 11:30
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 - 28 sept. 2006 à 17:25
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 - 28 sept. 2006 à 17:25
A voir également:
- [langage C] PB Suppresion déf variables
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage pascal - Télécharger - Édition & Programmation
- Débuter langage batch windows - Guide
4 réponses
mamiemando
Messages postés
33363
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 novembre 2024
7 801
26 sept. 2006 à 13:36
26 sept. 2006 à 13:36
Lors de la compilation, pas de problème, tout se passe bien, mais lors de l'exécution, le programme s'arrête sans analyser les images.
Lorsque je renomme les variables (qui ne sont pas utilisées je le répète) cela refonctionne.
Je pense que le code est un peu bancale, et par un miracle incroyable, ça marche dans certain cas. Je ne sais pas ce que tu utilises comme compilateur mais à mon avis tu devrais essayer avec gcc (dev-cpp sous windows) en mettant les options de warning.
Le mieux c'est d'utiliser un debuggeur pour voir où le programme passe et où il s'arrête. Tu peux aussi t'en sortir en écrivant des message sur la console pour surveiller le déroulement, avec des printf().
Malheureusement sans le code c'est difficile de t'aider plus
J'avais aussi le problème inverse, je ne peux plus déclarer de variables supplémentaires dans ma fonction main, je suis obligé de déclarer en variable globale.
Quel était le message d'erreur ?
Bonne chance
Lorsque je renomme les variables (qui ne sont pas utilisées je le répète) cela refonctionne.
Je pense que le code est un peu bancale, et par un miracle incroyable, ça marche dans certain cas. Je ne sais pas ce que tu utilises comme compilateur mais à mon avis tu devrais essayer avec gcc (dev-cpp sous windows) en mettant les options de warning.
Le mieux c'est d'utiliser un debuggeur pour voir où le programme passe et où il s'arrête. Tu peux aussi t'en sortir en écrivant des message sur la console pour surveiller le déroulement, avec des printf().
Malheureusement sans le code c'est difficile de t'aider plus
J'avais aussi le problème inverse, je ne peux plus déclarer de variables supplémentaires dans ma fonction main, je suis obligé de déclarer en variable globale.
Quel était le message d'erreur ?
Bonne chance
Bergie
Messages postés
139
Date d'inscription
mercredi 27 septembre 2006
Statut
Membre
Dernière intervention
7 mars 2009
7
27 sept. 2006 à 11:09
27 sept. 2006 à 11:09
Le code est disponible sur www.infotuto.com/Pb_Variables.c
J'ai oublié de préciser que les variables que je cherche à supprimer sont :
unsigned long imageWidth; // Image width
unsigned long imageHeight; // Image height
unsigned short bitPerPixel; // = 8 for 256 color BMP image
unsigned short planeNumber; // Number of planes : = 1 for 256 color images
unsigned int File_Testing;
Merci
Bergie
J'ai oublié de préciser que les variables que je cherche à supprimer sont :
unsigned long imageWidth; // Image width
unsigned long imageHeight; // Image height
unsigned short bitPerPixel; // = 8 for 256 color BMP image
unsigned short planeNumber; // Number of planes : = 1 for 256 color images
unsigned int File_Testing;
Merci
Bergie
mamiemando
Messages postés
33363
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 novembre 2024
7 801
28 sept. 2006 à 16:55
28 sept. 2006 à 16:55
Chez moi le programme plante car path n'est pas alloué.
Mes warnings sont :
Conseils :
1) Plutôt que de demander Path: demande plutôt le répertoire ou sont stockés les bmp.
2) Enlève le header <conio.h> qui empêche la compilation sous linux et qui ne me paraît pas utile (ça compile sans).
3) Remplace system("PAUSE") par getchar() qui marchera sous linux et windows.
Chez moi le programme semble marcher correctement mais crée des images noires. Le résultat est identique qu'il y ait les variables inutiles ou pas. Tu peux donc les supprimer. Ci dessous les sections de code que j'ai modifié :
Bonne chance
Mes warnings sont :
plop.c: In function ‘int main()’: plop.c:439: warning: format ‘%s’ expects type ‘char*’, but argument 3 has type ‘char (*)[500]’ plop.c:440: warning: format ‘%s’ expects type ‘char*’, but argument 3 has type ‘char (*)[500]’ plop.c:448: warning: format ‘%s’ expects type ‘char*’, but argument 3 has type ‘char (*)[500]’ plop.c:362: warning: unused variable ‘imageWidth’ plop.c:363: warning: unused variable ‘imageHeight’ plop.c:364: warning: unused variable ‘bitPerPixel’ plop.c:365: warning: unused variable ‘planeNumber’ plop.c:376: warning: unused variable ‘File_Testing’ plop.c:394: warning: unused variable ‘bmpFileName’
Conseils :
1) Plutôt que de demander Path: demande plutôt le répertoire ou sont stockés les bmp.
2) Enlève le header <conio.h> qui empêche la compilation sous linux et qui ne me paraît pas utile (ça compile sans).
3) Remplace system("PAUSE") par getchar() qui marchera sous linux et windows.
Chez moi le programme semble marcher correctement mais crée des images noires. Le résultat est identique qu'il y ait les variables inutiles ou pas. Tu peux donc les supprimer. Ci dessous les sections de code que j'ai modifié :
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> //#include <conio.h> //mando #include <stdio.h> #include <sys/types.h> #include <dirent.h> //........ int main() { // VARIABLES DECLARATION // Variables relative to the image characteristics // unsigned long imageWidth; // Image width //mando // unsigned long imageHeight; // Image height //mando // unsigned short bitPerPixel; // = 8 for 256 color BMP image //mando // unsigned short planeNumber; // Number of planes : = 1 for 256 color images //mando unsigned short threshold=90; // Threshold to distinguish between Iron and Grafit // Variables relative to the pixel position unsigned long pixIdx; // pixel index number unsigned long colIdx; // column index number unsigned long rowIdx; // row index number unsigned long depthIdx; // image number unsigned long nodIdx; // node index number // Variable to test the existence of the input file // unsigned int File_Testing; //mando // Variable to count the number of files in the folder unsigned int File_Number; // Variables to read the folder, extract the list of files struct dirent *lecture; char path[512]; //mando DIR *rep; FILE *File_List; FILE *File_Coordinates; BMPFILE * bmpf ; byte *bitmap ; // Variables to save the list of files to analyse char list[500]; char files_names[500]; // char bmpFileName[200]; //mando //................... do { printf("Path: "); scanf("%s",&path); //mando printf("\n"); if(path[strlen(path)-1]!='/') strcat(path,"/"); } while((rep = opendir(path)) == NULL); //................... fclose(File_List); fclose(File_Coordinates); printf("\n\n\tAnalysis complete, please check Coordinates.txt to retrieve data\n\n"); // system("PAUSE"); //mando getchar(); //mando return(0) }
Bonne chance
Bergie
Messages postés
139
Date d'inscription
mercredi 27 septembre 2006
Statut
Membre
Dernière intervention
7 mars 2009
7
28 sept. 2006 à 17:18
28 sept. 2006 à 17:18
Bonsoir
Effectivement ça a l'air de marcher comme ça, je peux supprimer les variables et le programme ne plante pas, mais je ne comprends vraiment pas pourquoi dans ma version :
- avec les déclarations de variable : pas plantage (fonctionne)
- sans les déclarations de variable : plantage (fonctionne pas et quitte de suite)
Alors que dans tous les cas, cela ne changeait rien à la variable Path !
Enfin bref, je vais retester cela avec le Path sous forme de tableau et non pas de tableur, mais ça a l'air bon :) :) :) JOIE :) :) :)
Si tu veux voir un peu ce que j'analyse comme images, c'est par ici :
www.infotuto.com/FIB.zip
(Prends ma nouvelle source du programme sur : www.infotuto.com/APiMaDES.c , j'ai changé pas mal de trucs)
C'est normal que l'image qui est écrite soit bizarre - j'en tends par là, qu'elle a des points blancs, j'analyse 1 pixel sur 2, sinon mon maillage final contenait plus de 2 000 000 éléments)
ENCORE UN ENORME MERCI MERCI MERCI
:)
Bergie
Effectivement ça a l'air de marcher comme ça, je peux supprimer les variables et le programme ne plante pas, mais je ne comprends vraiment pas pourquoi dans ma version :
- avec les déclarations de variable : pas plantage (fonctionne)
- sans les déclarations de variable : plantage (fonctionne pas et quitte de suite)
Alors que dans tous les cas, cela ne changeait rien à la variable Path !
Enfin bref, je vais retester cela avec le Path sous forme de tableau et non pas de tableur, mais ça a l'air bon :) :) :) JOIE :) :) :)
Si tu veux voir un peu ce que j'analyse comme images, c'est par ici :
www.infotuto.com/FIB.zip
(Prends ma nouvelle source du programme sur : www.infotuto.com/APiMaDES.c , j'ai changé pas mal de trucs)
C'est normal que l'image qui est écrite soit bizarre - j'en tends par là, qu'elle a des points blancs, j'analyse 1 pixel sur 2, sinon mon maillage final contenait plus de 2 000 000 éléments)
ENCORE UN ENORME MERCI MERCI MERCI
:)
Bergie
mamiemando
Messages postés
33363
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
16 novembre 2024
7 801
28 sept. 2006 à 17:25
28 sept. 2006 à 17:25
Hihi de rien :-) A bientôt, et désolée si j'ai mis un peu de temps pour répondre !
27 sept. 2006 à 10:32
Le code est disponible sur : www.infotuto.com/Pb_Variables.c
Je compile en effet avec DevC++ déjà, les seuls warnings restants sont ceux qui me disent que les variables ne sont pas utilisées ...
Merci
Bergie
27 sept. 2006 à 10:36
J'ai essayé de déboguer en mettant des pauses, des printfs un peu partout, le programme plante juste après avoir entré le chemin des images, que je rajoute des variable sou que j'essaye de virer les fameuses variables inutilisées ...
C'est vraiment étrange...
27 sept. 2006 à 10:59
Pour avoir les warning, j'utilisais un autre IDE (MinGW Studio)