Position d'un mot s'il existe (fichier)

yacm55 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
yacm55 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Construire un fichier H d'enregistrement, contenant pour chaque mot appartenant à F, sa première position dans le fichier G (position =0 si le mot de F n'existe pas dans G).
F,G deux fichier de caractères contenant des mots.

quelqu'un peut m'aider svp car mon code n'a pas fonctionné et merci d'avance
voici mon code:

#include <stdio.h>
#include <stdlib.h>
struct H {
char h[100];
int p; };

int main(int argc, char *argv[])
{
FILE*H; FILE*G; FILE*F;
struct H fichierH;

char x,y; int i,j,n,nn;

char ch[100], ch1[100];
H=fopen("PART-THREE","w");


F=fopen("PART-ONE","r");
G=fopen("PART-TWO","r");

while(x != EOF) {i=1; x= fgetc(F);
while(x != EOF && x != ' ') {ch[i]=x; i++; x= fgetc(F); }
n=i;
while(y != EOF) {j=1; y= fgetc(G);
while(y != EOF && y != ' ') {ch1[j]=y; j++; y= fgetc(G); }
nn=j;
if(strcmp(ch,ch1)==0){for(i=1; i<=n; i++){printf("%c",ch[i]);
printf("%d",j);}}}}

system("PAUSE");
return 0;
}


A voir également:

1 réponse

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut yacm55,

Ton code est très difficile à lire.

Met une déclaration par ligne, une instruction par ligne, une accolade sur sa propre ligne, indente correctement ton code (choisis un style cohérent et tiens toi au style de ton choix), et utilise les balises code pour poster ton code sur le forum.

Tu ne dis pas quel est le format de tes fichiers (comment se présentent les "mots", s'ils sont dans des phrases, ou si c'est juste une liste de mots, et par quoi ils sont séparés). Si c'est par des espaces (comme on pourrait le déduire de ton code), c'est assez simple de les distinguer, mais alors pourquoi n'utilises-tu pas fscanf() avec un spécificateur %s pour lire ces mots au lieu de lire caractère par caractère avec fgetc() ?

Sinon, là avec fgetc(), tu stocke des caractères, mais tu ne termines pas ta chaîne (avec '\0')... essaye d'afficher tes mots récupérés, tu verras...

Pour comparer avec strcmp(), il te faut inclure l'entête string.h

Pour pouvoir dire si un mot de F est dans G, pour chaque mot de F, tu dois parcourir G depuis le début. Là, tu ne fais pas cela.

Dal
0
yacm55 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup pour votre aide.
0