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

Résolu
mornaloce Messages postés 47 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 21 mars 2014 - 18 nov. 2010 à 16:51
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 - 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.
A voir également:

24 réponses

BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
27 déc. 2010 à 14:52
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
0
mornaloce Messages postés 47 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 21 mars 2014 2
27 déc. 2010 à 15:54
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);
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
27 déc. 2010 à 16:03
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
0
mornaloce Messages postés 47 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 21 mars 2014 2
27 déc. 2010 à 19:43
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 ;)

@+
0
Rejoignez-nous