Couper un mot lettre par lettre en C

thotoss -  
 thotoss -
Bonjour,
Voila j'ai un mot, définie ainsi :
char mot;

je le prend en faisant un get :
gets(mot);

mais ce que je voudrai maintenant c'est pouvoir utiliser chaque lettre de mon mot séparement. Par exemple si mon mot est 'bonjour', je voudrais pouvoir utilliser la lettre b, puis la lettre o ect ...
comment faire ?
merci
Configuration: Windows Vista
Internet Explorer 7.0

6 réponses

  1. vignemail1 Messages postés 1262 Statut Contributeur 259
     
    char *mot;
    char *caractere;

    for (c=mot; *c; c++){
    /*traitement pour le caractère c*/
    }
    1
    1. thotoss
       
      bonjour, merci de m'aider !
      je vois comment faire, mais le pb c'est que j'ai defini char mot, et non char*mot, et je ne peu pas le changer sinon tout mon prgramme planterait ! ce que je désire faire, en fait, c'est cela :
      j'ai un groupe de lettre ( 7 lettres precisement), et quand je rentre un mot, j'aimerais savoir si les lettres que je posséde sont dans ce mot ou pas !
      pourriez-vous m'éclairer un peu ?! cela fait 2 jours que je coince la dessus ! merci bocoup !
      0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    affiche ton code pour voir
    0
    1. thotoss
       
      salut,
      jveu bien afficher un bout de mon code, mais la fonction est trés longue alors j'affiche que ce qui nous interesse ^^ :


      int mot_valide(int plateau[15][15], char mot[20], char chevalet[7], int direction, int coord_X, int coord_Y)
      {
      int longueur=strlen(mot)+1;
      int existe=0; // indique si le mot existe dans le dico //
      int dans_chevalet=0;
      int i,j,k,l;
      char mot_bis[longueur];
      FILE * entree;
      char * ad1;
      char * ad2;
      ad1=&mot[0];
      ad2=&chevalet[0];
      for (k=0;k<longueur-1;k++)
      {
      for (l=0;l<7;l++)
      {
      ad1=&mot[l];
      ad2=&chevalet[0];
      printf(ad1);printf("\n");printf(ad2);printf("\n");
      if (strncmp(ad1,ad2,1))
      {
      dans_chevalet++;
      *ad2=' ';
      }
      if (dans_chevalet==k+1) break;
      ad2++;
      }
      }
      if (dans_chevalet!=longueur-1) // mot pas dans chevalet ? //
      {
      printf("Vous ne disposez pas des lettres necessaires pour faire ce mot !\n");
      return 0;
      }
      }


      Voila ce que j'ai fait ..c'est pas du tout claire je sais ... mais sa marche pas évidement parsque jme suis rendu compte que les pointeurs ad1 et ad2 ne pointaient pas sur une seule lettre, mais sur le mot entier...donc forcement sa me renvoi toujours 0 ^^. Si vous pouviez m'aider ... merci
      0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    tu ne peux faire gets(mot) puisque mot c'est un caracère

    voici le prototype de gets
    char *gets(char *s);
    tu vois bien qu'il faut un pointeur sur un char pour l'argument de gets
    0
  4. vignemail1 Messages postés 1262 Statut Contributeur 259
     
    un char mot, c'est juste un caractère, c'est pas par définition un mot (une chaine de caractère - string)
    Pour avoir un char* à partir d'un char, tu peux essayer :
    char mot;
    char *caractere;

    for (c=*mot; *c; c++){
    /*traitement pour le caractère c*/
    }

    mais je promets pas le résultat.
    Quand tu dis "quand je rentre un mot, j'aimerais savoir si les lettres que je possède sont dans ce mot ou pas !", c'est que toutes les lettres que tu possèdes ,dans un char* par exemple, sont TOUS dans le mot ou de savoir si l'un des caractères est dans le mot ou de savoir si une partie des lettres sont dans le mot ?

    En gros, c'est pour trouver un anagramme ou faire un jeu style MOTUS ?
    0
    1. thotoss
       
      bjr,
      en fait c pour un scrabble, donc oui il faudrait que je possède toutes les lettres du mot dans mon chevalet ...
      0
      1. thotoss > thotoss
         
        concraitement, jai
        un char mot qui est un mot pouvant contenir de 2 a 15 lettres
        un char chevalet qui contient 7 lettres
        et quand je rentre mon mot a placer, je voudrais savoir si je peux le placer, c'est a dire si je psséde dans mon chevalet les lettres necessaires ... et j'y arrive pas !!
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    je pense que tu voulais écrire
    char mot;
    char *c;
    
    for (c=&mot; *c; c++){
    /*traitement pour le caractère c*/
    } 
    0
    1. vignemail1 Messages postés 1262 Statut Contributeur 259
       
      oui, oui, tout à fait, c'est moi qui est parti en sucette. Merci d'avoir corriger.
      0
      1. thotoss > vignemail1 Messages postés 1262 Statut Contributeur
         
        concraitement, jai
        un char mot qui est un mot pouvant contenir de 2 a 15 lettres
        un char chevalet qui contient 7 lettres
        et quand je rentre mon mot a placer, je voudrais savoir si je peux le placer, c'est a dire si je psséde dans mon chevalet les lettres necessaires ... et j'y arrive pas !!
        merci !!
        0
  7. vignemail1 Messages postés 1262 Statut Contributeur 259
     
    Cela devrait être un truc du genre :
    char mot;
    char *c, *c2;
    char chevalet;
    
    int correct = 1;
    
    for (c=&mot; c* && (correct==1); c++){
    int trouve=0;
    for (c2=&chevalet; c2* && (trouve == 0); c2++){
    if (c==c2)
    trouve = 1;
    }
    correct = trouve;
    }
    if (correct == 1){
    printf("Mot correspond\n");
    }else{
    printf("Mot ne correspond pas\n");
    }
    
    0
    1. thotoss
       
      j'ai une erreur aux deux lignes suivantes :

      for (c=&mot;*c && correct==1;c++)
      for(c2=&mot;*c && trouve==0;c2++)

      j'ai comme erreur : cannot convert 'char**é to 'char*' in assignment
      0
    2. thotoss > thotoss
       
      UP !!
      merci si vs pouvez m'aider !
      0
    3. thotoss > thotoss
       
      personne pour m'aider svp ??? merci !
      0
    4. thotoss > thotoss
       
      pour répondre a vignemail1, le programme ne marche pas. en effet c=&mot ne vas pas, il faut ke je mette c=&mot[0], et la le programme compil, mais je retrouve le méme probleme kavant : le pointeur c ne pointe pas sur une seule lettre, mais sur le mot en général. Et moi je voudraiq pouvoir pointer sue chaque lettre du mot ! aidez-moi svp ça fait 3 jours que je bloque la-dessus !!! merci !!
      0
    5. thotoss > thotoss
       
      UP !
      please
      0