Up, bon j’ai un petit probleme avec fscanf et sscanf.
Voilà, en fait, ce que je veux réaliser, c’est de pouvoir traiter un fichier texte mot par mot pour ensuite effectuer un filtrage.
Le problème que je viens de rencontrer est le suivant, je veux pouvoir lire le mot tout en ayant connaissance de sa position dans le fichier texte (ligne).
Donc, j’ai utilisé fgets pour ligne une ligne du fichier texte (où j’ai précisé qu’une ligne ne contenait au max 100 caractères), pour pouvoir traiter la position des mots.
Ensuite, une boucle de fscanf pour la lecture mot par mot, cependant, au lieu de lire la ligne, elle lit la totalité du fichier et donc impossible de savoir leur disposition dans le fichier (ligne).
Par contre j’ai ouvert le fichier 2 fois. Sinon, l’adresse du pointeur fichier serait identique dès qu’il y a du changement sur l’une des variables.
Pour ceux qui ne voient pas trop d’où je veux en venir, voici le bout de code :
[code]void ouvrir_doc()
{
FILE *nf;
FILE *nf_aux;
char nomfic[20];
char temp[31];
char string_buffer[100];
int line = 1;
int arg;
// test si document ouvert actuellement
printf("Sasir le fichier à traiter : ");
fflush(stdin);
gets(nomfic);
fflush(stdin);
if( (nf = fopen(nomfic, "r"))== NULL ) //ouverture d'un fichier
{
fputs(“ERREUR : Fichier Inexistant\n”, stderr);
} else
{
//traitement mot à mot
//nf_aux = nf;
nf_aux = fopen(nomfic, “r”);
while(fgets(string_buffer, 100, nf))
{
//fscanf(nf, “%s”, &temp) != -1
//arg = sscanf(string_buffer, “%s”, &temp);
//while(arg)
while( (fscanf(nf_aux, “%s”, &temp) != -1))
{
line = atoi(string_buffer) + 1;
printf(“Mot lu : %s - position : %d\n”, temp, line);
//arg–;
//comptage de n° ligne d’apparition
//mot suivant
}
line++;
}
printf(“TRAITEMENT EFFECTUER\n”);
}
}[/code]