Trouver tous les mots d'un fichier qui peuvent etre formé par ch
firas scofield
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
bonjour
a partir d'une chaine de caracteres , je veux parcourir un dictionnaire (fichier texte) et trouver tous les mots qui peuvent etre former & partir de cette chaine , puis les transferer dasn une matrice , le code que j'ai ecrit , fonctionne seulement lorsque à la place du dictionnaire , je lui donne un mot (c'est à dire comparer la chaine donner avec un autre mot donner ) mais quand je travail avec le dictionnaire est tester chaque mot et apres j'affiche la matrice , il n'affche rien c'est à dire il n'a trouver aucun mot du dictionnaire qui peut etre former par la chaine donner , malgré qu'il existe plusieur..
voila le code :
a partir d'une chaine de caracteres , je veux parcourir un dictionnaire (fichier texte) et trouver tous les mots qui peuvent etre former & partir de cette chaine , puis les transferer dasn une matrice , le code que j'ai ecrit , fonctionne seulement lorsque à la place du dictionnaire , je lui donne un mot (c'est à dire comparer la chaine donner avec un autre mot donner ) mais quand je travail avec le dictionnaire est tester chaque mot et apres j'affiche la matrice , il n'affche rien c'est à dire il n'a trouver aucun mot du dictionnaire qui peut etre former par la chaine donner , malgré qu'il existe plusieur..
voila le code :
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#include<time.h>
int main()
{
char ch[27],mot[27];
char m[5000][27];//matrice dont je stock les mots du dictioonnaire qui peuvent etre former par ch
int i=0;
printf("donner une chaine \n");
gets(ch);
FILE* f=NULL;
f=fopen("dictionnaire.txt","r");
while(fgets(mot,27,f)!=NULL)
{
int j=0,erreur=0;//erreur variable bool intitialisé à 0 si une lettre du mot n'exite pas dans ch elle prend 1
while(j<strlen(mot)&& erreur==0)
{
if(strchr(ch,mot[j])!=NULL)
j++;
else
erreur=1;
}
if(!(erreur)) //tous les lettres du mots existent dans ch
{
strcpy(m[i],mot);
i++;
}
}
fclose(f);
int n=i;
for(i=0;i<n;i++)
printf("%s\n",m[i]);
return 0;
system("pause");
}
A voir également:
- Trouver tous les mots d'un fichier qui peuvent etre formé par ch
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
1 réponse
Bonjour,
Clairement, je n'ai pas tout lu.
Mais déjà, il y a quelques points à voir :
gets(ch); -> fonction à bannir. Utilise plutôt fgets(...);
Ensuite, attention à ces fonctions qui (sauf s'il n'y a plus de places) stockent le caractère '\n'... De fait, si tu fais des comparaisons, ça ne marchera pas. Je te conseille de remplacer '\n' par '\0'.
Et le system("pause") est à mettre avant le return 0; sinon il sert à rien.
Cdlt,
Clairement, je n'ai pas tout lu.
Mais déjà, il y a quelques points à voir :
gets(ch); -> fonction à bannir. Utilise plutôt fgets(...);
Ensuite, attention à ces fonctions qui (sauf s'il n'y a plus de places) stockent le caractère '\n'... De fait, si tu fais des comparaisons, ça ne marchera pas. Je te conseille de remplacer '\n' par '\0'.
char *p=strchr(ch, '\n'); if(p!=NULL) { *p='\0'; }
Et le system("pause") est à mettre avant le return 0; sinon il sert à rien.
Cdlt,