Trouver un mot dans un fichier ( langage C)

Résolu/Fermé
thotoss - 2 avril 2008 à 19:24
 thotoss - 6 avril 2008 à 12:42
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 !
A voir également:

3 réponses

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 569
2 avril 2008 à 19:58
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 cela fonctionne a merveille ! j'ai bien compris mes erreurs. Encore 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 569 > thotoss
6 avril 2008 à 11:38
De rien ;-)

Bonne continuation.
0
thotoss > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
6 avril 2008 à 12:42
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);
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 569
2 avril 2008 à 19:25
Salut,

affiche ton code, pour voir où ça ne marche pas.
1
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");
}

}
}
0
thotoss > thotoss
2 avril 2008 à 19:44
vraiment ne peut me sortir de l'impasse ??? un petit coup de pouce ?
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 569
2 avril 2008 à 19:55
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);

}
-1