[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
Bonjour,

J ai un problème concernant la suppression de définitions variable.
J'ai tapé un code permettant d'automatiser le traitement d'images obtenues à partir de microscopes (Microtomographie DUAL BEAM pour les connaisseurs).
Ayant modifié le code source et éclairci un peu tout ca, il me reste pas mal de variables que j'avais déclarées et que je n'utilise plus.

Je décide donc de nettoyer tout ca, je supprime les déclarations (les variables ne sont pas du tout utilisées dans tout le code).
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.

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.

Si quelqu'un a une idée pour pouvoir supprimer ces définitions inutiles, cela m'aiderait vraiment (juste histoire d'avoir une source plutot propre). (Inutile de me dire d'utiliser les variables définies en tant que globales dans la fonction main, en remplacant ainsi les autres, vu que je n ai plus de variables globales...)

Encore merci
Bergie
A voir également:

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
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
0
Bonjour

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
0
Pour la création de nouvelles variables, il n'y avait pas de message d'erreur, mais le programme se termine sans analyser mes images.

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...
0
Un petit doute, comment on affiche les warning ? Moi je n'ai que les erreurs grave, mais peut etre pas les warning.

Pour avoir les warning, j'utilisais un autre IDE (MinGW Studio)
0
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
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
0
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
Chez moi le programme plante car path n'est pas alloué.

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
0
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
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
0
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
Hihi de rien :-) A bientôt, et désolée si j'ai mis un peu de temps pour répondre !
0