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

Fermé
yacm55 Messages postés 3 Date d'inscription mercredi 8 avril 2015 Statut Membre Dernière intervention 14 avril 2015 - 9 avril 2015 à 21:19
yacm55 Messages postés 3 Date d'inscription mercredi 8 avril 2015 Statut Membre Dernière intervention 14 avril 2015 - 14 avril 2015 à 23:04
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 13/04/2015 à 10:35
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 mercredi 8 avril 2015 Statut Membre Dernière intervention 14 avril 2015
14 avril 2015 à 23:04
Merci beaucoup pour votre aide.
0