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

  FORUM HardWare.fr
  Programmation
  C

  Problèmes affichage texte

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problèmes affichage texte

n°2203696
solphat
Posté le 20-09-2013 à 22:43:32  profilanswer
 

Bonjour, j'ai voulue créer un programme pour réviser mon vocabulaire d'anglais, et je rencontre un problème qui est que quand je vais chercher un mot dans un tableau et que je l'affiche il manque la première lettre, et pareille quand il compare avec ma réponse. Merci d'avance  
 
Voici le code :
 
 
 

Code :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <time.h>
  5. int main(int argc, const char * argv[])
  6. {
  7.     int NombredeMots = 0, i = 0;
  8.     int NombreAleatoire = 0;
  9.     int Min = 1;
  10.     int francaisornot = 0;
  11.     int traduc = 2;
  12.     int compteur = 0;
  13.     char* Mots = NULL;
  14.     char* MotsTraduit = NULL;
  15.     char* MotsaVerifier = NULL;
  16.    
  17.     // On demande le nombre de mots  
  18.     printf("Combien de mots voulez-vous mettre ?\n" );
  19.     scanf("%d", &NombredeMots);
  20.    
  21.     if (NombredeMots > 0)
  22.     {
  23.        
  24.         //Tableaux Dynamique
  25.         Mots = malloc(NombredeMots * sizeof(char));
  26.         MotsTraduit = malloc(NombredeMots * sizeof(char));
  27.         MotsaVerifier = malloc(NombredeMots * sizeof(char));
  28.        
  29.        
  30.         //Demande mots  
  31.         for (i = 0 ; i < NombredeMots ; i++)
  32.         {
  33.             printf("Quel est le %d mot?\n ", i + 1);
  34.             scanf("%s", &Mots[i]);
  35.             printf("Mettez sa traduction :\n" );
  36.             scanf("%s", &MotsTraduit[i]);
  37.         }
  38.             while (compteur < NombredeMots)
  39.             {
  40.                 compteur++;
  41.                 //aleatoire: choix du mots  
  42.                 srand(time(NULL));
  43.                 NombreAleatoire = (rand() % (NombredeMots - Min + 1)) + Min;
  44.            
  45.                 //aleatoire: choix français ou traduction
  46.                 srand(time(NULL));
  47.                 francaisornot = (rand() % (traduc - Min + 1)) + Min;
  48.            
  49.                 //Mots Traduits vers Français
  50.                 if (francaisornot == 1)
  51.                 {
  52.                     //Demande Traduction
  53.                     NombreAleatoire = i;
  54.                     printf("Quel est la traduction de %s\n", &MotsTraduit[1]);
  55.                     scanf("%s", &MotsaVerifier[i]);
  56.                    
  57.                     //Vérification
  58.                     if (strcmp(&MotsaVerifier[i], &Mots[i]) == 0)
  59.                     {
  60.                         printf("Bonne Réponse\n" );
  61.                     }
  62.                     else
  63.                     {
  64.                         printf("reponse fausse, la réponse était: %s\n", &Mots[i]);
  65.                     }
  66.                    
  67.                 }
  68.                
  69.                 //Mots Français vers traduction  
  70.                 else if (francaisornot == 2)
  71.                 {
  72.                     //Demande Traduction  
  73.                     NombreAleatoire = i;
  74.                     printf("Quel est la traduction de %s\n", &Mots[i]);
  75.                     scanf("%s", &MotsaVerifier[i]);
  76.                    
  77.                     //Vérification  
  78.                     if (strcmp(&MotsaVerifier[i], &MotsTraduit[i]) == 0)
  79.                     {
  80.                         printf("Bonne Réponse\n" );
  81.                     }
  82.                     else
  83.                     {
  84.                         printf("reponse fausse, la réponse était: %s\n", &MotsTraduit[i]);
  85.                     }
  86.    
  87.                    
  88.                 }
  89.            
  90.             }
  91.         }
  92.        
  93.         free(Mots);
  94.         free(MotsTraduit);
  95.         free(MotsaVerifier);
  96.    
  97.     return 0;
  98.    
  99.     }

mood
Publicité
Posté le 20-09-2013 à 22:43:32  profilanswer
 

n°2203697
Farian
Posté le 20-09-2013 à 23:06:13  profilanswer
 

Bonjour !
 
Vos tableaux de mots, qui sont des tableaux de chaînes, devraient être des char** et non pas des char *.
 
En réglant ce petit problème, vous ne devriez pas être très loin de la solution.
 
Bonne continuation !

n°2203700
solphat
Posté le 20-09-2013 à 23:43:56  profilanswer
 

Merci de cette réponse, j'ai corrigé le programme mais j'obtiens une erreur : EXC_BAD_ACCESS

n°2203707
Farian
Posté le 21-09-2013 à 03:34:44  profilanswer
 

Postez le code modifié et donnez-nous plus d'indications sur l'erreur obtenue. Quel compilateur / OS ?
 
Bon courage !

n°2203711
solphat
Posté le 21-09-2013 à 09:01:17  profilanswer
 

J'utilise Xcode, et l'erreur obtenue est EXC_BAD_ACCES(code=2, adress=0x7fff8aa924ad)  
 
Voici le code modifié :  

Code :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <time.h>
  5. int main(int argc, const char * argv[])
  6. {
  7.     int NombredeMots = 0, i = 0;
  8.     int NombreAleatoire = 0;
  9.     int Min = 1;
  10.     int francaisornot = 0;
  11.     int traduc = 2;
  12.     int compteur = 0;
  13.     char** Mots = NULL;
  14.     char** MotsTraduit = NULL;
  15.     char** MotsaVerifier = NULL;
  16.    
  17.     // On demande le nombre de mots  
  18.     printf("Combien de mots voulez-vous mettre ?\n" );
  19.     scanf("%d", &NombredeMots);
  20.    
  21.     if (NombredeMots > 0)
  22.     {
  23.        
  24.         //Tableaux Dynamique
  25.         Mots = malloc(NombredeMots * sizeof(char));
  26.         MotsTraduit = malloc(NombredeMots * sizeof(char));
  27.         MotsaVerifier = malloc(NombredeMots * sizeof(char));
  28.        
  29.        
  30.         //Demande mots  
  31.         for (i = 0 ; i < NombredeMots ; i++)
  32.         {
  33.             printf("Quel est le %d mot?\n ", i + 1);
  34.             scanf("%s", Mots[i]);
  35.             printf("Mettez sa traduction :\n" );
  36.             scanf("%s", MotsTraduit[i]);
  37.         }
  38.             while (compteur < NombredeMots)
  39.             {
  40.                 compteur++;
  41.                 //aleatoire: choix du mots  
  42.                 srand(time(NULL));
  43.                 NombreAleatoire = (rand() % (NombredeMots - Min + 1)) + Min;
  44.            
  45.                 //aleatoire: choix français ou traduction
  46.                 srand(time(NULL));
  47.                 francaisornot = (rand() % (traduc - Min + 1)) + Min;
  48.            
  49.                 //Mots Traduits vers Français
  50.                 if (francaisornot == 1)
  51.                 {
  52.                     //Demande Traduction
  53.                     NombreAleatoire = i;
  54.                     printf("Quel est la traduction de %s\n", MotsTraduit[1]);
  55.                     scanf("%s", MotsaVerifier[i]);
  56.                    
  57.                     //Vérification
  58.                     if (strcmp(MotsaVerifier[i], Mots[i]) == 0)
  59.                     {
  60.                         printf("Bonne Réponse\n" );
  61.                     }
  62.                     else
  63.                     {
  64.                         printf("reponse fausse, la réponse était: %s\n", Mots[i]);
  65.                     }
  66.                    
  67.                 }
  68.                
  69.                 //Mots Français vers traduction  
  70.                 else if (francaisornot == 2)
  71.                 {
  72.                     //Demande Traduction  
  73.                     NombreAleatoire = i;
  74.                     printf("Quel est la traduction de %s\n", Mots[i]);
  75.                     scanf("%s", MotsaVerifier[i]);
  76.                    
  77.                     //Vérification  
  78.                     if (strcmp(MotsaVerifier[i], MotsTraduit[i]) == 0)
  79.                     {
  80.                         printf("Bonne Réponse\n" );
  81.                     }
  82.                     else
  83.                     {
  84.                         printf("reponse fausse, la réponse était: %s\n", MotsTraduit[i]);
  85.                     }
  86.    
  87.                    
  88.                 }
  89.            
  90.             }
  91.         }
  92.        
  93.         free(Mots);
  94.         free(MotsTraduit);
  95.         free(MotsaVerifier);
  96.    
  97.     return 0;

n°2203730
Farian
Posté le 21-09-2013 à 16:46:26  profilanswer
 

Bonjour !
 
Quand je vous disais de changer les tableaux de char *, en char **, cela ne concernait pas que le typage de la variable, mais aussi (et surtout) la façon d'allouer les tableaux ...
 
Un truc du genre  (je simplifie l'écriture)
 
Mots = malloc(NbMots*sizeof(char *))
for (i < NbMots) Mots[i] = malloc(TailleMaxDUnMot*sizeof(char)
 
Sinon, en effet, cela marche moins bien !
 
Soyez plus rigoureux sur l'utilisation / allocation de votre mémoire et cela ira tout seul.
 
Bonne continuation !
 


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

  Problèmes affichage texte

 

Sujets relatifs
Patrons pour détecter les titres et les sous tires d'un fichier texte[VB WORD] Position zone de texte
Afficher un texte au lieu de intval lorsque mon chiffre est 0Inclure en php un texte contenu dans un fichier dropbox
[Résolu][PHP / SQL] Automatique +++ AffichageComposer REVPDFLIB : bug à l'affichage du pdf
probleme d'affichage dans wampserverAjout texte document word
texte et XMLCentrer une image par rapport à un texte
Plus de sujets relatifs à : Problèmes affichage texte


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