Trouver un mot dans un fichier ( langage C)

Résolu/Fermé
Signaler
-
 thotoss -
Bonjour,
Je cherche a faire le programme suivant :
j'ai un fichier contenant que des mots de 2 lettres en colonne par ordre alphabetique de cette manière :
AA
AH
AI
AN
AS
AU
AY
BI
BU
CA
CE
CI
...
Je voudrais,en entrant un mot de 2 lettres, savoir si il se trouve dans mon fichier...le probleme c'est que je n'arrive pas a parcourir correctement le fichier je pense ! merci si vous pouvez m'aider !

3 réponses

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 562
Quand tu compares des chaînes de caractères il faut utiliser la fonction strcmp et pas l'opérateur d'égalité

N'oublie pas que tu veux parcurir un fichier, donc la condition dans la boucle n'est pas suffisante. La fin de fichier est donnée par la fonction int feof(FILE *fichier)

j'utilise do {} while(condition); puisque mot_bis n'est pas initalisé. Ca permet d'exécuter la boucle au moins une fois sans tester al condition.

J'ai ajouté aussi le cas n'existe pas, en utilisant la variable existe qui est mise à jour en fonction de test de comparaison
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Merci cela fonctionne a merveille ! j'ai bien compris mes erreurs. Encore merci !
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 562 > thotoss
De rien ;-)

Bonne continuation.
>
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019

J'ai une autre petite question :
j'ai nommé mot_valide ma fonction que vous m'avez decrite ci-dessus, que j'ai passé int(et non void) pour qu'elle me renvoi 0 si le mot n'est pas valide, et 1 si le mot est valide. J'effectue donc un do while de la manière suivante, de façaon a recommencer jusqu'a l'obtention d'un mot valide ! cependant quand je rentre un mot qui n'existe pas, il reboucle, me raffiche bien "Entrez votre mot :", mais la il passe directement a "Choisir votre direction..." sans que je puisse rentrer un autre mot. Cela n'est il pas possible ?? merci si vous pouvez m'adier !


do
{
printf("Entrez votre mot :\n");
gets(mot);
printf("Choisir votre direction pour placer le mot : 0=>droite 1=>bas \n");
scanf("%d",&direction);
printf("Choisir l'abscice de la premiere lettre de votre mot : \n");
scanf("%d",&coord_X);
printf("Choisir l'ordonnee de la premiere lettre de votre mot : \n");
scanf("%d",&coord_Y);
mot_valide(plateau_de_jeu,mot,direction,coord_X ,coord_Y);
}
while (mot_valide(plateau_de_jeu,mot,direction,coord_X ,coord_Y)!=1);
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 562
Salut,

affiche ton code, pour voir où ça ne marche pas.
Salut ! merci de m'aider! voici ma fonction :

void mot_existe(char mot[20])
{
int longueur=strlen(mot);
int existe=0;
int i;
char mot_bis[longueur];
FILE * entree;
if (longueur==2)
{
entree=fopen("2_lettres.txt","r");
while (mot_bis!=mot)
{
fgets(mot_bis,longueur,entree);
if (mot_bis==mot) printf("Bravo ! Le mot existe ! \n");
}

}
}
> thotoss
vraiment ne peut me sortir de l'impasse ??? un petit coup de pouce ?
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 562
essaie comme ça
#include<stdio.h>
#include<string.h>

void mot_existe (char *mot);


int main ()
{
  char mot[20];

  printf ("Mot à rechercher? ");
  scanf ("%s", mot);
  mot_existe (mot);
  return 0;
}

void mot_existe (char *mot)
{
  int longueur = strlen (mot);
  int existe = 0;
  char mot_bis[longueur];
  FILE *entree;

  if (longueur == 2) {
    entree = fopen ("2_lettres.txt", "r");
    do {
      fscanf (entree,"%s",mot_bis);
      if (strcmp(mot_bis,mot)==0){
        printf ("Bravo ! Le mot existe ! \n");
        existe=1;
      }
    }while (!feof(entree) && strcmp(mot_bis,mot)!=0);
  }
  if(!existe)
    printf ("Le mot %s n'existe pas!\n",mot);

}