Pti souci en c sur un prog
niki
-
marvinrouge -
marvinrouge -
g un programme qui prend en entrée un fichier txt contenant des mots
ex:fichier.txt=
coucou la musique va bien
on est au mois d'aout
mon prog va lire l'ensemble de ces mots et les récrire dans un fichier txt du type:
# Mise a jour 04/08/2004
# revision 40
# programme lire.exe
# ------------------------------------------------------------------------------
# Analyse du corps du message
# ------------------------------------------------------------------------------
body GPN40 /\b(?:coucou|la|musique|va|bien|on|est|au|mois|d'aout|d'aout)\b/i
describe GPN40 mots repérés par le logiciel GPN
score GPN40 3
pouvez vous m'expliquer pourquoi dans ce fichier le dernier mot du fichier d'entree qui est "d'aout" ce retrouve 2 fois dans mon fichier de sortie et comment faire pour l'éviter, voici mon prog:
#include <stdio.h>
int i;
char chaine[20];
int main(void)
{
FILE *filer;
FILE *filew;
FILE *fileno;
fileno = fopen("no.txt","r+"); //fichier mémorisant le numéro de révision
filew = fopen("resultat.cf","wt"); //fichier de sortie
if((filer = fopen("fichier.txt", "r")) != NULL) //on ouvre le fichier d'entree et verifie si on y arrive
{
fprintf(filew,"# Mise a jour 04/08/2004\n");
fprintf(filew,"# revision ");
fscanf(fileno,"%d",&i);
i++;
rewind(fileno);
fprintf(fileno,"%d",i);
fclose(fileno);
fprintf(filew,"%d",i);
fprintf(filew,"\n");
fprintf(filew,"# programme lire.exe\n");
fprintf(filew,"\n");
fprintf(filew,"# ------------------------------------------------------------------------------\n");
fprintf(filew,"# Analyse du corps du message\n");
fprintf(filew,"# ------------------------------------------------------------------------------\n");
fprintf(filew,"\n");
fprintf(filew,"body GPN");
fprintf(filew,"%d",i);
fprintf(filew,"\t\t/\\b(?:");
fscanf(filer,"%s",&chaine);
fprintf(filew,"%s",chaine);
while (!feof(filer))
{
fprintf(filew,"|");
fscanf(filer,"%s",&chaine);
fprintf(filew,"%s",chaine);
}
fprintf(filew,")\\b/i\n");
fprintf(filew,"describe GPN");
fprintf(filew,"%d",i);
fprintf(filew,"\tmots repérés par le logiciel GPN\n");
fprintf(filew,"score GPN");
fprintf(filew,"%d",i);
fprintf(filew,"\t\t3\n");
}
fclose(filer);
fclose(filew);
}
ex:fichier.txt=
coucou la musique va bien
on est au mois d'aout
mon prog va lire l'ensemble de ces mots et les récrire dans un fichier txt du type:
# Mise a jour 04/08/2004
# revision 40
# programme lire.exe
# ------------------------------------------------------------------------------
# Analyse du corps du message
# ------------------------------------------------------------------------------
body GPN40 /\b(?:coucou|la|musique|va|bien|on|est|au|mois|d'aout|d'aout)\b/i
describe GPN40 mots repérés par le logiciel GPN
score GPN40 3
pouvez vous m'expliquer pourquoi dans ce fichier le dernier mot du fichier d'entree qui est "d'aout" ce retrouve 2 fois dans mon fichier de sortie et comment faire pour l'éviter, voici mon prog:
#include <stdio.h>
int i;
char chaine[20];
int main(void)
{
FILE *filer;
FILE *filew;
FILE *fileno;
fileno = fopen("no.txt","r+"); //fichier mémorisant le numéro de révision
filew = fopen("resultat.cf","wt"); //fichier de sortie
if((filer = fopen("fichier.txt", "r")) != NULL) //on ouvre le fichier d'entree et verifie si on y arrive
{
fprintf(filew,"# Mise a jour 04/08/2004\n");
fprintf(filew,"# revision ");
fscanf(fileno,"%d",&i);
i++;
rewind(fileno);
fprintf(fileno,"%d",i);
fclose(fileno);
fprintf(filew,"%d",i);
fprintf(filew,"\n");
fprintf(filew,"# programme lire.exe\n");
fprintf(filew,"\n");
fprintf(filew,"# ------------------------------------------------------------------------------\n");
fprintf(filew,"# Analyse du corps du message\n");
fprintf(filew,"# ------------------------------------------------------------------------------\n");
fprintf(filew,"\n");
fprintf(filew,"body GPN");
fprintf(filew,"%d",i);
fprintf(filew,"\t\t/\\b(?:");
fscanf(filer,"%s",&chaine);
fprintf(filew,"%s",chaine);
while (!feof(filer))
{
fprintf(filew,"|");
fscanf(filer,"%s",&chaine);
fprintf(filew,"%s",chaine);
}
fprintf(filew,")\\b/i\n");
fprintf(filew,"describe GPN");
fprintf(filew,"%d",i);
fprintf(filew,"\tmots repérés par le logiciel GPN\n");
fprintf(filew,"score GPN");
fprintf(filew,"%d",i);
fprintf(filew,"\t\t3\n");
}
fclose(filer);
fclose(filew);
}
A voir également:
- Pti souci en c sur un prog
- Robot prog - Télécharger - Édition & Programmation
- Clear prog - Télécharger - Sécurité
- Prog dvb - Télécharger - Télévision
- Prog DVB ne fonctionne plus ✓ - Forum TV & Vidéo
- Dossier temp introuvable en instalant un prog - Forum Windows
3 réponses
Hello !
Retente avec la boucle suivante :
while (!feof(filer))
{
fprintf(filew,"|");
if (fscanf(filer,"%s",&chaine))
fprintf(filew,"%s",chaine);
}
Retente avec la boucle suivante :
while (!feof(filer))
{
fprintf(filew,"|");
if (fscanf(filer,"%s",&chaine))
fprintf(filew,"%s",chaine);
}
Bonne habitude à prendre
str est une chaine
fic un fichier
int ligne = 0; // COMPTEUR DE LIGNES
while (!feof(fic)) // TANT QU'ON EST PAS A LA FIN DU FICHIER
{
ligne++;
str[0] = '\0'; // ON 'NETTOYE' LA VARIABLE str CAR ELLE SERT EN BOUCLE (while) ET PEUIT DONC CONTENIR D'UN COUP SUR L'AUTRE DE 'VEILLES' DONNEES
fscanf(fic, "%s", str); // ON TENTE DE LIRE UNE LIGNE
if (str[0]!='\0') // SI ON A LU QUELQUE CHOSE
{
printf("en ligne %i on a lu %s\n", ligne, str); // ON L'AFFICHE (PAR EXEMPLE)
}
}
voilà voilà !
marvinrouge
str est une chaine
fic un fichier
int ligne = 0; // COMPTEUR DE LIGNES
while (!feof(fic)) // TANT QU'ON EST PAS A LA FIN DU FICHIER
{
ligne++;
str[0] = '\0'; // ON 'NETTOYE' LA VARIABLE str CAR ELLE SERT EN BOUCLE (while) ET PEUIT DONC CONTENIR D'UN COUP SUR L'AUTRE DE 'VEILLES' DONNEES
fscanf(fic, "%s", str); // ON TENTE DE LIRE UNE LIGNE
if (str[0]!='\0') // SI ON A LU QUELQUE CHOSE
{
printf("en ligne %i on a lu %s\n", ligne, str); // ON L'AFFICHE (PAR EXEMPLE)
}
}
voilà voilà !
marvinrouge