Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2336 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Error variable + cours sur les classes.

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Error variable + cours sur les classes.

n°1319677
kirua_sama
Learn sciences with senses
Posté le 06-03-2006 à 17:43:36  profilanswer
 

Bonsoir, alors voila j'ai fait un petit programme qui marche parfaitement bien, mais lors de la fermeture de celui-ci il me renvoi un erreur:
Run-Time Check Failure #2 - Stack around the variable 'Mot' was corrupted.
J'aimerais savoir svp d'ou vient cette erreur et comment la corriger SVP, merci.
 
Sinon j'aimerais savoir aussi s'il vous plait si vous ne connaitrier pas de bon tutoriel pour apprendre le fonctionnement des Classes et aussi pour apprendre a maitriser la librairie SDL. Voila merci beaucoup tout le monde


Message édité par kirua_sama le 06-03-2006 à 19:04:28
mood
Publicité
Posté le 06-03-2006 à 17:43:36  profilanswer
 

n°1319695
skelter
Posté le 06-03-2006 à 17:58:51  profilanswer
 

ton programme est buggé, tu peux montrer le code ?

n°1319716
kirua_sama
Learn sciences with senses
Posté le 06-03-2006 à 18:34:34  profilanswer
 

Jmet un copyright dessus avant ?  :lol:  :p  
 

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4. #include <stdlib.h>
  5. #include <time.h>
  6. char lireCaractere();
  7. long NombreAleatoire(long nombreMax);
  8. int main(int argc, char* argv[])
  9. {
  10. FILE* Dictionnaire = NULL;
  11. long NombreDeMot = 0;
  12. char ChaineDeStockage[50] = "";
  13. long NumMotChoisi = 0;
  14. char Mot[] = "";
  15. char MaLettre = NULL;
  16. char CaractereTrouve = 0;
  17. int Credit = 10;
  18. char MotTrouve[30] = "***************************";
  19. char* BonneLettre = NULL;
  20. int Gagne = 1;
  21. long CaractereLu = 0;
  22. Dictionnaire = fopen("Dictionnaire.txt", "r" );
  23.  printf("Bienvenue dans le jeu du pendu\n\n" );
  24. if (Dictionnaire != NULL)
  25.     {
  26.         printf("l'ouverture du Dictionnaire s'est bien deroulee\n" );
  27.  while(!feof(Dictionnaire))
  28.  {
  29.   fgets(ChaineDeStockage, 50, Dictionnaire);
  30.   NombreDeMot++;
  31.  }
  32.  rewind(Dictionnaire);
  33.  NumMotChoisi = NombreAleatoire(NombreDeMot);
  34.  while (NumMotChoisi > 0)
  35.  {
  36.   CaractereLu = fgetc(Dictionnaire);
  37.    if (CaractereLu == '\n')
  38.    NumMotChoisi--;
  39.  }
  40.     /* Le curseur du fichier est positionné au bon endroit.
  41.      On n'a plus qu'à faire un fgets qui lira la ligne */
  42.   fgets(Mot, 100, Dictionnaire);
  43.    // On vire l'\n à la fin
  44.   Mot[strlen(Mot) - 1] = '\0';
  45.  printf("Il y a %ld mots dans le dico.\n\n", NombreDeMot);
  46.  fclose(Dictionnaire);
  47.     }
  48.     else
  49.     {
  50.            printf("Impossible d'ouvrir le fichier Dictionnaire.txt" );
  51.     }
  52. printf("Le mot a trouver est le suivant:    " );
  53. for(int i=0; i < strlen(Mot); i++)
  54.   {
  55.    printf("*" );
  56.   }
  57. printf("\n\n" );
  58. while(Credit !=0 && Gagne != 0)
  59. {
  60.  printf("Veuilez taper une lettre: " );
  61.  MaLettre = lireCaractere();
  62.  BonneLettre = strchr(Mot,MaLettre);
  63.  if(BonneLettre != NULL)
  64.  {
  65.   printf("Bravo, %c se trouve bien dans le mot:\nIl vous reste toujours %d Vies:\n", MaLettre, Credit);
  66.  }
  67.  else
  68.  {
  69.   Credit--;
  70.   printf("Desoler %c ne se trouve pas dans le mot:\nIl ne vous reste plus que %d Vies:\n", MaLettre, Credit);
  71.  }
  72.  for(int i=0; i < strlen(Mot); i++)
  73.   {
  74.    CaractereTrouve = Mot[i];
  75.    if(MaLettre==CaractereTrouve)
  76.    {
  77.     MotTrouve[i] = CaractereTrouve;
  78.    }
  79.   }
  80.   MotTrouve[strlen(Mot)] = '\0';
  81.   printf("\n%s", MotTrouve);
  82.   printf("\n\n" );
  83.   Gagne = strcmp(Mot, MotTrouve);
  84. }
  85. if(Credit == 0)
  86. {
  87.  printf("Il ne vous reste plus de vie, Vous avez perdu.... pfff le mot etait bien:  %s\n\n", Mot);
  88. }
  89. else if(Gagne == 0)
  90. {
  91.  printf("Bravo, vous avez gagne le mot etait bien:  %s\n\n", Mot);
  92. }
  93. system("PAUSE" );
  94.     return 0;
  95. }
  96. char lireCaractere()
  97. {
  98.     char caractere = 0;
  99.     caractere = getchar(); // On lit le premier caractère
  100.     caractere = toupper(caractere); // On met la lettre en majuscule si elle ne l'est pas déjà
  101.     // On lit les autres caractères mémorisés un à un jusqu'à le \n (pour les effacer)
  102.     while (getchar() != '\n') ;
  103.     return caractere; // On retourne le premier caractère qu'on a lu
  104. }
  105. long NombreAleatoire(long nombreMax)
  106. {
  107.     srand(time(NULL));
  108.     return (rand() % nombreMax);
  109. }


 
Voila mon code merci bien de m'aider.

n°1319726
skelter
Posté le 06-03-2006 à 18:49:39  profilanswer
 

c'est du c, tu devrais deplacer ton topic dans la catégorie C

n°1319732
kirua_sama
Learn sciences with senses
Posté le 06-03-2006 à 19:03:59  profilanswer
 

d'accord desole... et pour les classes et SDL en c++ stp ?

n°1319739
skelter
Posté le 06-03-2006 à 19:24:27  profilanswer
 

pour sdl, la doc sur le site officiel est si mauvaise que ca ? (on prends toujours un risque à aller voir ailleur)
pour le c++, il y a des lien ici (livres, doc divers, faq)
http://forum.hardware.fr/hardwaref [...] rup/stroup
 
et un bon cours online si tu veux
http://casteyde.christian.free.fr/ [...] book1.html

n°1319752
kirua_sama
Learn sciences with senses
Posté le 06-03-2006 à 19:45:30  profilanswer
 

Merci beaucoup pour les liens. euh oue bah la doc c'est bien mais j'aure bien voulu si ca existait un bon tuto pour bien passer de la console au graphique^^. Merci beaucoup. Je vais aller lire les cours :)
 
(Up pour mon probleme)

n°1319771
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-03-2006 à 20:16:35  profilanswer
 

kirua_sama a écrit :

Voila mon code merci bien de m'aider.


Commentaires et correction partiels. Bug trouvé.

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4. #include <stdlib.h>
  5. #include <time.h>
  6. /* -ed-
  7. char lireCaractere();
  8. long NombreAleatoire(long nombreMax);
  9. Inutile. Il suffit de definir avant d'utiliser.
  10. */
  11. /* -ed- fonctions non exportees : ajoute static
  12. ajoute void pour avoir une forme 'prototypale'.
  13. */
  14. static char lireCaractere(void)
  15. {
  16.    char caractere = 0;
  17.    caractere = getchar(); // On lit le premier caractère
  18.    caractere = toupper(caractere); // On met la lettre en majuscule si elle ne l'est pas déjà
  19.    // On lit les autres caractères mémorisés un à un jusqu'au '\n' (pour les effacer)
  20.    while (getchar() != '\n')
  21.       ;
  22.    return caractere; // On retourne le premier caractère qu'on a lu
  23. }
  24. static long NombreAleatoire(long nombreMax)
  25. {
  26. /* -ed-
  27.    srand(time(NULL));
  28. doit etre appele une fois au debut du programme */
  29.    return (rand() % nombreMax);
  30. }
  31. int main(int argc, char* argv[])
  32. {
  33.    FILE* Dictionnaire = NULL;
  34.    long NombreDeMot = 0;
  35.    char ChaineDeStockage[50] = "";
  36.    long NumMotChoisi = 0;
  37.    char Mot[] = "";
  38.    /* -ed-
  39.    char MaLettre = NULL;
  40.    NULL est un pointeur. Tu veux sans doute dire 0.
  41.    */
  42.    char MaLettre = 0;
  43.    char CaractereTrouve = 0;
  44.    int Credit = 10;
  45.    char MotTrouve[30] = "***************************";
  46.    char* BonneLettre = NULL;
  47.    int Gagne = 1;
  48.    long CaractereLu = 0;
  49. /* -ed- deplace. Ajoute (unsigned) car srand() attend un unsigned int. */
  50.    srand((unsigned) time(NULL));
  51.    Dictionnaire = fopen("Dictionnaire.txt", "r" );
  52.    printf("Bienvenue dans le jeu du pendu\n\n" );
  53.    if (Dictionnaire != NULL)
  54.    {
  55.       printf("l'ouverture du Dictionnaire s'est bien deroulee\n" );
  56.       while (!feof(Dictionnaire))
  57.       {
  58. /* -ed-
  59.          fgets(ChaineDeStockage, 50, Dictionnaire);
  60.          c'est quoi ce 50 ?
  61.          */
  62.          fgets(ChaineDeStockage, sizeof ChaineDeStockage, Dictionnaire);
  63.          NombreDeMot++;
  64.          /* -ed- mmm... comptage, OK... */
  65.       }
  66.       rewind(Dictionnaire);
  67.       NumMotChoisi = NombreAleatoire(NombreDeMot);
  68.       /* -ed- OK, on saute les n-1 premiers mots. Astucieux. */
  69.       while (NumMotChoisi > 0)
  70.       {
  71.          CaractereLu = fgetc(Dictionnaire);
  72.          if (CaractereLu == '\n')
  73.             NumMotChoisi--;
  74.       }
  75.       /* Le curseur du fichier est positionné au bon endroit.
  76.        On n'a plus qu'à faire un fgets qui lira la ligne */
  77.       fgets(Mot, 50, Dictionnaire);
  78.        /* -ed-
  79.        BUG!
  80.        Tu as menti a ton compilateur. C'est pas 50, c'est sizeof Mot, et ca fait  1 !
  81.        Comportement indefini.
  82.        */
  83.       // On vire l'\n à la fin
  84.       Mot[strlen(Mot) - 1] = '\0';
  85. /* -ed- tu aurais pu afficher ca avant. */
  86.       printf("Il y a %ld mots dans le dico.\n\n", NombreDeMot);
  87.       fclose(Dictionnaire);
  88.    }
  89.    else
  90.    {
  91.       /* -ed- manquait un '\n' */
  92.       printf("Impossible d'ouvrir le fichier Dictionnaire.txt\n" );
  93.    }
  94. /* -ed- STOP! Si on a pas pu ouvrir le dictionnaire, me mot est "". On continue quand meme ? */
  95.    printf("Le mot a trouver est le suivant:    " );
  96.    /* -ed-
  97.    for(int i=0; i < strlen(Mot); i++)
  98.    Cette forme n'est pas supportee en C90
  99.    C'est pas une bonne idee de mettre le strlen() dans la boucle.
  100.    Il est evalue a chaque fois, alors qu'ici, il est invariant...
  101.    */
  102.    {
  103.       int const n = strlen(Mot);
  104.       int i;
  105.       for (i = 0; i < n; i++)
  106.       {
  107.          printf("*" );
  108.       }
  109.    }
  110.    printf("\n\n" );
  111.    while (Credit != 0 && Gagne != 0)
  112.    {
  113.       printf("Veuilez taper une lettre: " );
  114.       MaLettre = lireCaractere();
  115.       BonneLettre = strchr(Mot, MaLettre);
  116.       if (BonneLettre != NULL)
  117.       {
  118.          printf("Bravo, %c se trouve bien dans le mot:\nIl vous reste toujours %d Vies:\n", MaLettre, Credit);
  119.       }
  120.       else
  121.       {
  122.          Credit--;
  123.          printf("Desoler %c ne se trouve pas dans le mot:\nIl ne vous reste plus que %d Vies:\n", MaLettre, Credit);
  124.       }
  125.       {
  126.          int const n = strlen(Mot);
  127.          int i;
  128.          for (i = 0; i < n; i++)
  129.          {
  130.             CaractereTrouve = Mot[i];
  131.             if (MaLettre == CaractereTrouve)
  132.             {
  133.                MotTrouve[i] = CaractereTrouve;
  134.             }
  135.          }
  136.       }
  137.       MotTrouve[strlen(Mot)] = '\0';
  138.       printf("\n%s", MotTrouve);
  139.       printf("\n\n" );
  140.       Gagne = strcmp(Mot, MotTrouve);
  141.    }
  142.    if (Credit == 0)
  143.    {
  144.       printf("Il ne vous reste plus de vie, Vous avez perdu.... pfff le mot etait bien:  %s\n\n", Mot);
  145.    }
  146.    else if (Gagne == 0)
  147.    {
  148.       printf("Bravo, vous avez gagne le mot etait bien:  %s\n\n", Mot);
  149.    }
  150.    system("PAUSE" );
  151.    return 0;
  152. }


Message édité par Emmanuel Delahaye le 06-03-2006 à 20:38:37

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1319779
kirua_sama
Learn sciences with senses
Posté le 06-03-2006 à 20:31:07  profilanswer
 

waaaa merci enormement pour ton travail. Je vais retrailler tout le code avec tes commentaire ^^. ( je fai ca demin le je doi aller travailler ^^ ).

n°1321294
kirua_sama
Learn sciences with senses
Posté le 08-03-2006 à 19:54:20  profilanswer
 

Citation :

Code :
  1. Code :
  2.    1.
  3.       #include <stdio.h>
  4.    2.
  5.       #include <string.h>
  6.    3.
  7.       #include <ctype.h>
  8.    4.
  9.       #include <stdlib.h>
  10.    5.
  11.       #include <time.h>
  12.    6.
  13.      
  14.    7.
  15.       /* -ed-
  16.    8.
  17.       char lireCaractere();
  18.    9.
  19.       long NombreAleatoire(long nombreMax);
  20.   10.
  21.   11.
  22.       Inutile. Il suffit de definir avant d'utiliser.
  23.   12.
  24.   13.
  25.       */
  26.   14.
  27.      
  28.   15.
  29.       /* -ed- fonctions non exportees : ajoute static
  30.   16.
  31.   17.
  32.       ajoute void pour avoir une forme 'prototypale'.
  33.   18.
  34.   19.
  35.       */
  36.   20.
  37.       static char lireCaractere(void)
  38.   21.
  39.       {
  40.   22.
  41.         char caractere = 0;
  42.   23.
  43.      
  44.   24.
  45.         caractere = getchar(); // On lit le premier caractère
  46.   25.
  47.         caractere = toupper(caractere); // On met la lettre en majuscule si elle ne l'est pas déjà
  48.   26.
  49.      
  50.   27.
  51.         // On lit les autres caractères mémorisés un à un jusqu'au '\n' (pour les effacer)
  52.   28.
  53.         while (getchar() != '\n')
  54.   29.
  55.            ;
  56.   30.
  57.      
  58.   31.
  59.         return caractere; // On retourne le premier caractère qu'on a lu
  60.   32.
  61.       }
  62.   33.
  63.      
  64.   34.
  65.       static long NombreAleatoire(long nombreMax)
  66.   35.
  67.       {
  68.   36.
  69.       /* -ed-
  70.   37.
  71.         srand(time(NULL));
  72.   38.
  73.       doit etre appele une fois au debut du programme */
  74.   39.
  75.      
  76.   40.
  77.         return (rand() % nombreMax);
  78.   41.
  79.       }
  80.   42.
  81.      
  82.   43.
  83.       int main(int argc, char* argv[])
  84.   44.
  85.       {
  86.   45.
  87.         FILE* Dictionnaire = NULL;
  88.   46.
  89.         long NombreDeMot = 0;
  90.   47.
  91.         char ChaineDeStockage[50] = "";
  92.   48.
  93.         long NumMotChoisi = 0;
  94.   49.
  95.         char Mot[] = "";
  96.   50.
  97.      
  98.   51.
  99.         /* -ed-
  100.   52.
  101.         char MaLettre = NULL;
  102.   53.
  103.   54.
  104.         NULL est un pointeur. Tu veux sans doute dire 0.
  105.   55.
  106.         */ 
  107.   56.
  108.         char MaLettre = 0;
  109.   57.
  110.         char CaractereTrouve = 0;
  111.   58.
  112.         int Credit = 10;
  113.   59.
  114.         char MotTrouve[30] = "***************************";
  115.   60.
  116.         char* BonneLettre = NULL;
  117.   61.
  118.         int Gagne = 1;
  119.   62.
  120.         long CaractereLu = 0;
  121.   63.
  122.      
  123.   64.
  124.       /* -ed- deplace. Ajoute (unsigned) car srand() attend un unsigned int. */
  125.   65.
  126.         srand((unsigned) time(NULL));
  127.   66.
  128.      
  129.   67.
  130.         Dictionnaire = fopen("Dictionnaire.txt", "r" );
  131.   68.
  132.      
  133.   69.
  134.         printf("Bienvenue dans le jeu du pendu\n\n" );
  135.   70.
  136.      
  137.   71.
  138.         if (Dictionnaire != NULL)
  139.   72.
  140.         {
  141.   73.
  142.            printf("l'ouverture du Dictionnaire s'est bien deroulee\n" );
  143.   74.
  144.      
  145.   75.
  146.            while (!feof(Dictionnaire))
  147.   76.
  148.            {
  149.   77.
  150.       /* -ed-
  151.   78.
  152.               fgets(ChaineDeStockage, 50, Dictionnaire);
  153.   79.
  154.   80.
  155.               c'est quoi ce 50 ?
  156.   81.
  157.               */
  158.   82.
  159.               fgets(ChaineDeStockage, sizeof ChaineDeStockage, Dictionnaire);
  160.   83.
  161.               NombreDeMot++;
  162.   84.
  163.               /* -ed- mmm... comptage, OK... */
  164.   85.
  165.            }
  166.   86.
  167.      
  168.   87.
  169.            rewind(Dictionnaire);
  170.   88.
  171.      
  172.   89.
  173.            NumMotChoisi = NombreAleatoire(NombreDeMot);
  174.   90.
  175.      
  176.   91.
  177.            /* -ed- OK, on saute les n-1 premiers mots. Astucieux. */
  178.   92.
  179.            while (NumMotChoisi > 0)
  180.   93.
  181.            {
  182.   94.
  183.               CaractereLu = fgetc(Dictionnaire);
  184.   95.
  185.               if (CaractereLu == '\n')
  186.   96.
  187.                  NumMotChoisi--;
  188.   97.
  189.            }
  190.   98.
  191.      
  192.   99.
  193.            /* Le curseur du fichier est positionné au bon endroit.
  194. 100.
  195.             On n'a plus qu'à faire un fgets qui lira la ligne */
  196. 101.
  197.      
  198. 102.
  199.            fgets(Mot, 50, Dictionnaire);
  200. 103.
  201.             /* -ed-
  202. 104.
  203. 105.
  204.             BUG!
  205. 106.
  206. 107.
  207.             Tu as menti a ton compilateur. C'est pas 50, c'est sizeof Mot, et ca fait  1 !
  208. 108.
  209. 109.
  210.             Comportement indefini.
  211. 110.
  212.             */     Desole je ne comprends pas ici ton commentaire, j'ai mis 50 car je ne connais pas la taille de tout les mot de mon dictionnaire, je le met donc a 50 pour qu'il lise au maximum 50 caracteres par ligne, si je le mettais a sizeof Mot ca cree une erreur.
  213.    111.
  214.      
  215. 112.
  216.            // On vire l'\n à la fin
  217. 113.
  218.            Mot[strlen(Mot) - 1] = '\0';
  219. 114.
  220.      
  221. 115.
  222.       /* -ed- tu aurais pu afficher ca avant. */
  223. 116.
  224.            printf("Il y a %ld mots dans le dico.\n\n", NombreDeMot);
  225. 117.
  226.      
  227. 118.
  228.            fclose(Dictionnaire);
  229. 119.
  230.         }
  231. 120.
  232.         else
  233. 121.
  234.         {
  235. 122.
  236.            /* -ed- manquait un '\n' */
  237. 123.
  238.            printf("Impossible d'ouvrir le fichier Dictionnaire.txt\n" );
  239. 124.
  240.         }
  241. 125.
  242.      
  243. 126.
  244.       /* -ed- STOP! Si on a pas pu ouvrir le dictionnaire, me mot est "". On continue quand meme ? */
  245.       J'arrange ca immediatement
  246. 127.
  247.         printf("Le mot a trouver est le suivant:    " );
  248. 128.
  249.         /* -ed-
  250. 129.
  251.         for(int i=0; i < strlen(Mot); i++)
  252. 130.
  253. 131.
  254.         Cette forme n'est pas supportee en C90
  255. 132.
  256. 133.
  257.         C'est pas une bonne idee de mettre le strlen() dans la boucle.
  258. 134.
  259.         Il est evalue a chaque fois, alors qu'ici, il est invariant...
  260. 135.
  261.         */ J'ai alors juste a l'enregistre dans une variable avant la boucle ?
  262. 136.
  263.         {
  264. 137.
  265.            int const n = strlen(Mot);
  266. 138.
  267.            int i;
  268. 139.
  269.            for (i = 0; i < n; i++)
  270. 140.
  271.            {
  272. 141.
  273.               printf("*" );
  274. 142.
  275.            }
  276. 143.
  277.         }
  278. 144.
  279.      
  280. 145.
  281.         printf("\n\n" );
  282. 146.
  283.      
  284. 147.
  285.         while (Credit != 0 && Gagne != 0)
  286. 148.
  287.         {
  288. 149.
  289.      
  290. 150.
  291.            printf("Veuilez taper une lettre: " );
  292. 151.
  293.            MaLettre = lireCaractere();
  294. 152.
  295.      
  296. 153.
  297.            BonneLettre = strchr(Mot, MaLettre);
  298. 154.
  299.      
  300. 155.
  301.            if (BonneLettre != NULL)
  302. 156.
  303.            {
  304. 157.
  305.               printf("Bravo, %c se trouve bien dans le mot:\nIl vous reste toujours %d Vies:\n", MaLettre, Credit);
  306. 158.
  307.            }
  308. 159.
  309.            else
  310. 160.
  311.            {
  312. 161.
  313.               Credit--;
  314. 162.
  315.               printf("Desoler %c ne se trouve pas dans le mot:\nIl ne vous reste plus que %d Vies:\n", MaLettre, Credit);
  316. 163.
  317.            }
  318. 164.
  319.      
  320. 165.
  321.      
  322. 166.
  323.            {
  324. 167.
  325.               int const n = strlen(Mot);
  326. 168.
  327.               int i;
  328. 169.
  329.               for (i = 0; i < n; i++)
  330. 170.
  331.               {
  332. 171.
  333.                  CaractereTrouve = Mot[i];
  334. 172.
  335.      
  336. 173.
  337.                  if (MaLettre == CaractereTrouve)
  338. 174.
  339.                  {
  340. 175.
  341.                     MotTrouve[i] = CaractereTrouve;
  342. 176.
  343.      
  344. 177.
  345.                  }
  346. 178.
  347.               }
  348. 179.
  349.            }
  350. 180.
  351.      
  352. 181.
  353.            MotTrouve[strlen(Mot)] = '\0';
  354. 182.
  355.            printf("\n%s", MotTrouve);
  356. 183.
  357.            printf("\n\n" );
  358. 184.
  359.            Gagne = strcmp(Mot, MotTrouve);
  360. 185.
  361.         }
  362. 186.
  363.      
  364. 187.
  365.      
  366. 188.
  367.      
  368. 189.
  369.         if (Credit == 0)
  370. 190.
  371.         {
  372. 191.
  373.            printf("Il ne vous reste plus de vie, Vous avez perdu.... pfff le mot etait bien:  %s\n\n", Mot);
  374. 192.
  375.         }
  376. 193.
  377.         else if (Gagne == 0)
  378. 194.
  379.         {
  380. 195.
  381.            printf("Bravo, vous avez gagne le mot etait bien:  %s\n\n", Mot);
  382. 196.
  383.         }
  384. 197.
  385.      
  386. 198.
  387.         system("PAUSE" );
  388. 199.
  389.         return 0;
  390. 200.
  391.       } [i]



 
 
Voila j'ai effectuer la plupart des modification mais l'erreur subsite, j'ai aussi des questions quand a vos commentaire sur mon code. Je vous remercie.

mood
Publicité
Posté le 08-03-2006 à 19:54:20  profilanswer
 

n°1321301
Emmanuel D​elahaye
C is a sharp tool
Posté le 08-03-2006 à 20:12:40  profilanswer
 


Citation :

          fgets(Mot, 50, Dictionnaire);
            /* -ed-
            BUG!
            Tu as menti a ton compilateur. C'est pas 50, c'est sizeof Mot, et ca fait  1 !
            Comportement indefini.
            */     Desole je ne comprends pas ici ton commentaire, j'ai mis 50 car je ne connais pas la taille de tout les mot de mon dictionnaire, je le met donc a 50 pour qu'il lise au maximum 50 caracteres par ligne, si je le mettais a sizeof Mot ca cree une erreur.


Ben oui, parce que Mot est trop petit  

char Mot[] = "";


si tu veux qu'il accepte 50 char, il faut le définir en conséquence :  

  char Mot[50];
   ...
   fgets(Mot, sizeof Mot, Dictionnaire);


Citation :


        /* -ed-
        for(int i=0; i < strlen(Mot); i++)
        Cette forme n'est pas supportee en C90
        C'est pas une bonne idee de mettre le strlen() dans la boucle.
        Il est evalue a chaque fois, alors qu'ici, il est invariant...
        */ J'ai alors juste a l'enregistre dans une variable avant la boucle ?


Oui.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1321309
kirua_sama
Learn sciences with senses
Posté le 08-03-2006 à 20:21:12  profilanswer
 

Merci enormement c'est parfait ca a resolu mon probleme !! ^^.
Le fait de cree un Tableau de 50 ca gaspille pas de la memoire ? parce que meme en important le mot du dictionnaire mon tableau mot Prend toujours 50 adresse de memoire ?  
En tout cas merci enormemant j'etais perdu je vais me mettre au vrai c++ maitenant avec les classes et le SDL ^^

n°1321310
Emmanuel D​elahaye
C is a sharp tool
Posté le 08-03-2006 à 20:25:15  profilanswer
 

kirua_sama a écrit :

Le fait de cree un Tableau de 50 ca gaspille pas de la memoire ? parce que meme en important le mot du dictionnaire mon tableau mot Prend toujours 50 adresse de memoire ?  


De toutes façons, tu n'as pas le choix, ou alors utilises des mots plus petits, parce que à part en chimie ou en pharmacie, les mots de plus 26 lettres (anticonstitutionnellement), c'est assez rare en français...


Message édité par Emmanuel Delahaye le 08-03-2006 à 21:04:04

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1321312
skelter
Posté le 08-03-2006 à 20:28:00  profilanswer
 

Citation :

En tout cas merci enormemant j'etais perdu je vais me mettre au vrai c++ maitenant avec les classes et le SDL ^^


 
en bossant serrieusement t'es partie pour des mois, tu peux deja oublier tes projets sdl et autre
 

Citation :

Le fait de cree un Tableau de 50 ca gaspille pas de la memoire ?


 
si tu veut stocker une chaine qui fait jusqu'a 50 caracteres, soit tu déclares un tableau de 50+1 (gaspillage mais pas prise de tete) soit tu déclares un pointeur de caractere et tu lui affecte ulterieurement l'adresse d'une zone mémoire allouée dynamiquement

n°1321337
kirua_sama
Learn sciences with senses
Posté le 08-03-2006 à 21:04:40  profilanswer
 

oki merci beaucoup tout le monde ^^.  
 

Citation :

en bossant serrieusement t'es partie pour des mois, tu peux deja oublier tes projets sdl et autre


Pourquoi ?

n°1321338
Emmanuel D​elahaye
C is a sharp tool
Posté le 08-03-2006 à 21:05:42  profilanswer
 

kirua_sama a écrit :

oki merci beaucoup tout le monde ^^.  
 

Citation :

en bossant serrieusement t'es partie pour des mois, tu peux deja oublier tes projets sdl et autre


Pourquoi ?


Le C++, c'est énorme. Pourquoi tu veux faire du C++ ?


Message édité par Emmanuel Delahaye le 08-03-2006 à 23:03:57

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1321347
kirua_sama
Learn sciences with senses
Posté le 08-03-2006 à 21:16:02  profilanswer
 

bah en fait j'ai fait du xhtml css et php pour mon site et la petit a petit j'aimerais bien realise un jeu... que je gere moi meme et puis le c++ permet de tout faire alors je voudrais l'apprendre. (Pour le jeu je sais que c'est un un travail monstrueux, il existe aussi des logiciels tout fait pour en realise, mais j'aimerais tout de même le faire a partir du c++, ca me permettra de joindre ensuite le c#). Et puis j'hesite encores mais peut-etre que j'aimerais bien faire de mon metier celui de programmer.

n°1321451
Joel F
Real men use unique_ptr
Posté le 08-03-2006 à 23:02:58  profilanswer
 

bordel el rapport en C++ et XHTML/CSS [:dawa]

n°1322011
kirua_sama
Learn sciences with senses
Posté le 09-03-2006 à 17:02:59  profilanswer
 

bah nan mais c'etait pour parle du php ... et c'etait pour dire ke j'apprend en vu d'un projet.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Error variable + cours sur les classes.

 

Sujets relatifs
probleme passage variable page à une autreTester si variable est NULL ? [résolu]
Spécifier une variable dans une fonction connection textUpload: variable du dossier de destination [RESOLU]
Simple question PHP (Variable)[instruction lambda] variable non initialisée
Variable variable en DOS ????appeller une fonction en javascript à l'aide d'un variable
incrementation d'une variable ($var1, $var2, $var3, ...)Variable php
Plus de sujets relatifs à : Error variable + cours sur les classes.


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR