Récupération d'un mot aléatoire depuis un fichier texte [Résolu]

Messages postés
53
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
21 mars 2014
- - Dernière réponse : BunoCS
Messages postés
14636
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
9 octobre 2019
- 28 déc. 2010 à 09:30
Bonjour à tous. Voilà je vous explique mon problème. J'aimerais faire un petit programme qui permet de récupérer un mot aléatoirement dans un fichier texte puis de demander à l'utilisateur si ce mot est féminin ou masculin (réponse qui sera au préalable inscrite aussi dans le fichier texte). Ma question est donc : comment récupérer un mot aléatoirement (ou plus précisément une ligne de mon fichier texte) ?

Merci d'avance pour vos réponses.
Afficher la suite 

4/24 réponses

Messages postés
14636
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
9 octobre 2019
90
0
Merci
Tiens, voici un exemple:
int main(int argc, char *argv[])
{
  char ligneRecup[10] = "chat m"; // chaine en dur, pour tester
  char *mot = NULL; 
  char lettre = '\0'; 
  char *pch = NULL; 
  char *pch2 = NULL;

  // attention, je n'utilise pas ta lecture de fichier

  pch = strtok (ligneRecup," "); 
  printf("Voici le mot : %s\n", pch); 

  pch2 = strtok (NULL, " "); 
  
  mot = (char*)malloc(pch2-pch);
  strcpy(mot, pch); 
  lettre=*pch2;
  printf("Et voici la lettre: %c\n", lettre); 

  system("PAUSE");	
  return 0;
}



@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Commenter la réponse de BunoCS
Messages postés
53
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
21 mars 2014
2
0
Merci
Ha oui effectivement désolé. J'ai modifié ma variable : "char genreDuMot[50]={0}" et maintenant ça marche ! Merci beaucoup buno !

J'aurais juste une dernière question à posée après c'est fini ^^
En fait, une fois le genre du mot récupéré, je veux le comparé avec la proposition de l'utilisateur. Mais même si mes 2 variables sont égales, le programme considère qu'elles ne le sont pas et j'ignore pourquoi car mes deux char sont de même taille et comportent exactement les même valeur.
Voici ma condition de comparaison:

char genreDuMot[5] = {0};
char lettre[5] = {0};

scanf("%s", lettre);

if(lettre == genreDuMot)
printf("\nReponse correcte\n\n");

else
printf("\nReponse fausse. Le genre du mot etait : %s\n\n", genreDuMot);
Commenter la réponse de mornaloce
Messages postés
14636
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
9 octobre 2019
90
0
Merci
Il ne faut pas utiliser == pour tester l'équivalence des chaines de caractères. Cet opérateur va seulement tester les pointeurs, et il y a de très fortes chances pour qu'ils soient différents.
A la place, il faut utiliser strcmp() (ou stricmp() pour être insensible à la casse)

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Commenter la réponse de BunoCS
Messages postés
53
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
21 mars 2014
2
0
Merci
Ca marche nikel ! Merci beaucoup buno pour ton aide très précieuse et merci aussi à CptPingu. Ca fait plaisir d'avoir un programme qui marche ^^

Merci encore buno tu gère ;)

@+
Commenter la réponse de mornaloce