Chaines de caractères ;
Souheil.H
-
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 ;
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 ;
A voir également:
- Chaines de caractères ;
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Caractères spéciaux mac - Guide
- Caracteres speciaux - Guide
1 réponse
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...
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...
souheil.H
Merci , j'ai fais comme ceci et je pense que ça marche