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
A voir également:

6 réponses

vignemail1 Messages postés 1246 Date d'inscription   Statut Contributeur Dernière intervention   259
 
char *mot;
char *caractere;

for (c=mot; *c; c++){
/*traitement pour le caractère c*/
}
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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

affiche ton code pour voir
0
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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
vignemail1 Messages postés 1246 Date d'inscription   Statut Contributeur Dernière intervention   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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
je pense que tu voulais écrire
char mot;
char *c;

for (c=&mot; *c; c++){
/*traitement pour le caractère c*/
} 
0
vignemail1 Messages postés 1246 Date d'inscription   Statut Contributeur Dernière intervention   259
 
oui, oui, tout à fait, c'est moi qui est parti en sucette. Merci d'avoir corriger.
0
thotoss > vignemail1 Messages postés 1246 Date d'inscription   Statut Contributeur Dernière intervention  
 
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
vignemail1 Messages postés 1246 Date d'inscription   Statut Contributeur Dernière intervention   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
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
thotoss > thotoss
 
UP !!
merci si vs pouvez m'aider !
0
thotoss > thotoss
 
personne pour m'aider svp ??? merci !
0
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
thotoss > thotoss
 
UP !
please
0