Couper un mot lettre par lettre en C

Fermé
thotoss - 13 avril 2008 à 11:39
 thotoss - 16 avril 2008 à 09:47
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

6 réponses

vignemail1 Messages postés 1246 Date d'inscription vendredi 8 octobre 2004 Statut Contributeur Dernière intervention 13 septembre 2019 259
13 avril 2008 à 11:46
char *mot;
char *caractere;

for (c=mot; *c; c++){
/*traitement pour le caractère c*/
}
1
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 566
13 avril 2008 à 12:15
Salut,

affiche ton code pour voir
0
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 566
13 avril 2008 à 12:16
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 vendredi 8 octobre 2004 Statut Contributeur Dernière intervention 13 septembre 2019 259
13 avril 2008 à 12:18
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
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
13 avril 2008 à 12:27
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 566
13 avril 2008 à 12:21
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 vendredi 8 octobre 2004 Statut Contributeur Dernière intervention 13 septembre 2019 259
13 avril 2008 à 12:22
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 vendredi 8 octobre 2004 Statut Contributeur Dernière intervention 13 septembre 2019
13 avril 2008 à 12:27
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 vendredi 8 octobre 2004 Statut Contributeur Dernière intervention 13 septembre 2019 259
13 avril 2008 à 12:32
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
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
13 avril 2008 à 14:12
UP !!
merci si vs pouvez m'aider !
0
thotoss > thotoss
14 avril 2008 à 15:13
personne pour m'aider svp ??? merci !
0
thotoss > thotoss
14 avril 2008 à 15:46
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
15 avril 2008 à 09:47
UP !
please
0