Trouver un mot dans un fichier ( langage C)
Résolu/Fermé
A voir également:
- Chercher un mot dans un fichier texte en c
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Ouvrir un fichier .bin - Guide
- Comment faire un fichier pdf - Guide
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
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
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
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
2 avril 2008 à 19:25
Salut,
affiche ton code, pour voir où ça ne marche pas.
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");
}
}
}
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");
}
}
}
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
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); }
6 avril 2008 à 11:36
6 avril 2008 à 11:38
Bonne continuation.
6 avril 2008 à 12:42
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);