Chaines de caractères ;

Souheil.H -  
 souheil.H -
Bonjour ,

Je viens vers vous aujourd'hui pour vous demander comment pourrais-je , à partir d'un fichier .txt ouvert en lecture/écriture determiner quel est la position de chaque mot :
Exemple : Je suis ici pour demander de l'aide donnerait :
Je / 1
Suis/2
Ici/3 ....

Voici mon code déjà pour la lecture/ecriture :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 4000

void fusionne(char * tab1, char * tab2, int l)
{
int j=strlen(tab2);
int k=0;
int i;
if (j!=0)
{
tab2[j]='/';
tab2[j+1]='' ;
tab2[j+2]='\n';
for (i=j+3; i<j+3+l; i++)
{
tab2[i]=tab1[k];
k++;
}
}
else
{
for (i=j; i<j+l; i++)
{
tab2[i]=tab1[k];
k++;
}
}
}

int main()
{
char tab[max];
char tab_nouns[max], tab_verbe[max], tab_adj[max], tab_adv[max],tab_determinants[max], tab_non[max];
char mot[max];
int i=0;

FILE* fichier = NULL;
FILE * fichier_tag = NULL;
int caractereActuel = 0;

fichier_tag = fopen("fichier_tag.txt", "r");
if (fichier_tag != NULL)
{
printf("Input file opened \n\n ");
do
{
caractereActuel = fgetc(fichier_tag);
printf("%c", caractereActuel);
tab[i]=caractereActuel;
i++;

} while (caractereActuel != EOF);

fclose(fichier_tag);
}

int j=0;
for (i=0; i<strlen(tab); i++)
{
if (tab[i]=='_')
{
if ((tab[i+1]=='J') && (tab[i+2]=='J'))
{
fusionne(&mot,&tab_adj,j);
j=0;
i+=4;
}
else
if ((tab[i+1]=='N') && (tab[i+2]=='N'))
{
fusionne(&mot,&tab_nouns,j);
j=0;
i+=4;
}
else
if ((tab[i+1]=='V') && (tab[i+2]=='B'))
{
fusionne(&mot,&tab_verbe,j);
j=0;
i+=4;
}
else if ((tab[i+1]=='I') && (tab[i+2]=='N'))
{
fusionne(&mot,&tab_adv,j);
j=0;
i+=4;
}
else
if ((tab[i+1]=='D') && (tab[i+2]=='T'))
{
fusionne(&mot,&tab_determinants,j);
j=0;
i+=4;
}
else
{
fusionne(&mot,&tab_non,j);
j=0;
i+=4;
}
}
if (((tab[i]==',') && (tab[i+1]=='_')) || ((tab[i]=='.') && (tab[i+1]=='_')) )
{
i+=4;
mot[j]=tab[i];
}
else mot[j]=tab[i];
j++;

}
printf("\n\n");

fichier = fopen("output.txt", "w");

if (fichier != NULL)
{
printf("Output file is being proceed\n\n");

fputs("Nouns: \n", fichier);
for (i=0; i<strlen(tab_nouns); i++)
{
fputc(tab_nouns[i],fichier);
}
fputs("\n\n", fichier);
printf("...\n\n");

fputs("Verbs: \n", fichier);
for (i=0; i<strlen(tab_verbe); i++)
{
putc(tab_verbe[i], fichier);
}
fputs("\n\n", fichier);
printf("...\n\n");

fputs("Adverbs: \n", fichier);
for (i=0; i<strlen(tab_adv); i++)
{
putc(tab_adv[i],fichier);
}
fputs("\n\n", fichier);
printf("...\n\n");

fputs("Adjectifs: \n", fichier);
for (i=0; i<strlen(tab_adj); i++)
{
fputc(tab_adj[i],fichier);
}
fputs("\n\n", fichier);
printf("...\n\n");

fputs("Determinants: \n", fichier);
for (i=0; i<strlen(tab_adj); i++)
{
fputc(tab_determinants[i],fichier);
}
fputs("\n\n", fichier);
printf("...\n\n");

fputs("Unknown tags: \n", fichier);
for (i=0; i<strlen(tab_non); i++)
{
fputc(tab_non[i],fichier);
}
printf("Output file has correctly been made \n\n");

}

return 0;
}

Merci à vous pour votre aide ;

1 réponse

  1. paly2 Messages postés 261 Statut Membre 25
     
    J'ai beaucoup de mal à lire le code parce qu'il n'est pas entre des balises <code> :p

    Pour déterminer la position d'un mot, il suffit d'incrémenter un compteur à chaque fois que l'on trouve un nouveau mot. Ainsi, à chaque fois que l'on trouve un nouveau mot, ce compteur sera égal à la position du mot en question, que tu peux afficher, enregistrer...
    0
    1. souheil.H
       
      Merci , j'ai fais comme ceci et je pense que ça marche
      #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>
      #define max 4000

      int nbre(int n)
      {
      return n%10;
      }

      int nbre1 (int n)
      {
      return n/10;
      }

      void fusionne(char * tab1, char * tab2, int l, int p)
      {
      int j=strlen(tab2);
      int k=0;
      int i;
      if (j!=0)
      {
      tab2[j]='\n';
      for (i=j+1; i<j+1+l; i++)
      {
      tab2[i]=tab1[k];
      k++;
      }
      tab2[i]='/';
      if (p<10) tab2[i+1]=p+'0';
      else
      {
      tab2[i+1]=nbre1(p)+'0';
      tab2[i+2]=nbre(p)+'0';
      }


      }
      else
      {
      for (i=j; i<j+l; i++)
      {
      tab2[i]=tab1[k];
      k++;
      }
      tab2[i]='/';
      if (p<10) tab2[i+1]=p+'0';
      else
      {
      tab2[i+1]=nbre1(p)+'0';
      tab2[i+2]=nbre(p)+'0';
      }
      }
      }

      int main()
      {
      char tab[max];
      char tab_nouns[max], tab_verbe[max], tab_adj[max], tab_adv[max], tab_non[max];
      char mot[max];
      int i;

      FILE* fichier = NULL;
      FILE * fichier_tag = NULL;
      int caractereActuel = 0;

      i=0;
      int p=0;
      fichier_tag = fopen("fichier_tag.txt", "r");
      if (fichier_tag != NULL)
      {
      printf("The file has correctly been opened \n\n ");
      do
      {
      caractereActuel = fgetc(fichier_tag);
      printf("%c", caractereActuel);
      tab[i]=caractereActuel;
      i++;

      } while (caractereActuel != EOF);

      fclose(fichier_tag);
      }

      int j=0;
      for (i=0; i<strlen(tab); i++)
      {
      if (tab[i]=='_')
      { p++;
      if ((tab[i+1]=='J') && (tab[i+2]=='J'))
      {
      fusionne(&mot,&tab_adj,j,p);
      j=0;
      i+=4;
      }
      else
      if ((tab[i+1]=='N') && (tab[i+2]=='N'))
      {
      fusionne(mot,tab_nouns,j,p);
      j=0;
      i+=4;
      }
      else
      if ((tab[i+1]=='V') && (tab[i+2]=='B'))
      {
      fusionne(mot,tab_verbe,j,p);
      j=0;
      i+=4;
      }
      else if ((tab[i+1]=='I') && (tab[i+2]=='N'))
      {
      fusionne(mot,tab_adv,j,p);
      j=0;
      i+=4;
      }

      else
      {
      fusionne(mot,tab_non,j,p);
      j=0;
      i+=4;
      }
      }
      if ((tab[i]==',') && (tab[i+1]=='_'))
      {
      i+=4;
      mot[j]=tab[i];
      }

      if ((tab[i]=='.') && (tab[i+1]=='_') )
      {
      i+=4;
      mot[j]=tab[i];
      p=0;
      }
      else {mot[j]=tab[i];}
      j++;


      }
      printf("\n\n");

      fichier = fopen("output_file.txt", "w");

      if (fichier != NULL)
      {
      printf("The output has been created \n\n");
      fputs("Nouns: \n", fichier);
      for (i=0; i<strlen(tab_nouns); i++)
      {
      fputc(tab_nouns[i],fichier);
      }
      fputs("\n\n", fichier);

      fputs("Verbs: \n", fichier);

      for (i=0; i<strlen(tab_verbe); i++)
      {
      putc(tab_verbe[i], fichier);
      }

      fputs("\n\n", fichier);

      fputs("Adverbs: \n", fichier);
      for (i=0; i<strlen(tab_adv); i++)
      {
      putc(tab_adv[i],fichier);
      }
      fputs("\n\n", fichier);

      fputs("Adjectifs: \n", fichier);
      for (i=0; i<strlen(tab_adj); i++)
      {
      fputc(tab_adj[i],fichier);
      }

      fputs("\n\n", fichier);

      fputs("Unknown tags \n", fichier);
      for (i=0; i<strlen(tab_non); i++)
      {
      fputc(tab_non[i],fichier);
      }
      fclose(fichier);
      }

      return 0;
      }
      0