Eliminer les commentaires d'un fichier c
Fermé
hafed22
Messages postés
9
Statut
Membre
-
GrandCaribou Messages postés 29450 Date d'inscription Statut Modérateur Dernière intervention -
GrandCaribou Messages postés 29450 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
La fonction "ELE_com" permit d'éliminer les commentaires d'un fichier c , les commentaires qui commencent par "//......... " ça marche ,mais le problème avec les commentaires par "/*................... */ "
J'ai remarqué que :
-les lignes après /* ne serons pas effacer...
-Je pense que lorsque l'appel a fgets() pour la deuxième fois à l'intérieur de la boucle while le curseur sur INFILE (fichier) ne change pas pour fgets() de la première boucle while c'est-à-dire lorsque un commentaire effacée à l'intérieur de la boucle les lignes après /* et avant */ serons recopié de nouveau par la boucle principale !
s.v.p votre aide !!
Merci d'avance
Mon code:
La fonction "ELE_com" permit d'éliminer les commentaires d'un fichier c , les commentaires qui commencent par "//......... " ça marche ,mais le problème avec les commentaires par "/*................... */ "
J'ai remarqué que :
-les lignes après /* ne serons pas effacer...
-Je pense que lorsque l'appel a fgets() pour la deuxième fois à l'intérieur de la boucle while le curseur sur INFILE (fichier) ne change pas pour fgets() de la première boucle while c'est-à-dire lorsque un commentaire effacée à l'intérieur de la boucle les lignes après /* et avant */ serons recopié de nouveau par la boucle principale !
s.v.p votre aide !!
Merci d'avance
Mon code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/** fonction qui elemine les commentaires **/
ELE_com()
{FILE* INFILE,*OUTFILE;
int l=0,i=0,j=0,pos=0;
char buf[500],temp[500],c;
OUTFILE=fopen("new.txt","w");
if((INFILE = fopen("test.txt","r"))==NULL)
printf("\n ERREUR A L'OUVERTURE, CE FICHIER N'EXISTE PAS\n");
else
{
/* effacer les commentaires qui commence par // */
while(NULL != fgets(buf, sizeof buf,INFILE))
{if(NULL != strstr(buf, "//"))
{
while(buf[l]!='/')
{l++;}
for(i=l;i<strlen(buf);i++)
{ buf[i]=' ';}
fprintf(OUTFILE, "%s \n",buf);
}
else fprintf(OUTFILE, "%s",buf);
}
fseek(INFILE, 0,0); // remise a zéro curseur
// effacer les commentaires /*.....*/
while(NULL != fgets(buf, sizeof buf,INFILE))
{// le cas ou nous trouvons */ et /* sur la même linge
if((NULL != strstr(buf, "/*"))&&(NULL != strstr(buf, "*/")))
{{l=0;
while((buf[l]!='/')&&(buf[l]!='\n')) // pour déterminer la position de la commentaire
{buf[l]=' ';l++;}
buf[l]=' ';i=0,l=0;
}}
l=0;i=0;
// cas ou nous trouvons une chaine contient commentaire*/ ou/*commentaire
if((NULL != strstr(buf, "/*"))||(NULL != strstr(buf, "*/")))
{
if(NULL != strstr(buf, "/*"))
{while((buf[l]!='/')&&(buf[l]!='\n')) // pour déterminer la position de la commentaire /*
{l++;}l--;
i=strlen(buf)+1;
while(i!=l)
{buf[i]=' ';i--;}
buf[l]=' '; i=0,l=0;fprintf(OUTFILE, "%s\n",buf);
}
// pour continuer a effacée les linges entre /*... et... */
while((NULL != fgets(buf, sizeof buf,INFILE))&&(NULL != strstr(buf, "*/")))
{ fprintf(OUTFILE, "%s"," ");}
printf("%s voila",buf);
if(NULL != strstr(buf,"*/"))
{while((buf[l]!='/')&&(buf[l]!='\n'))
{l++;}
while(i!=l+1)
{buf[i]=' ';i++;}
i=0,l=0;fprintf(OUTFILE, "%s\n",buf);
}
else fprintf(OUTFILE, "%s",buf);
}
}
fclose(OUTFILE);
fclose(INFILE);
}
printf(" \n !! bien,operation reussite !! \n ");
return 0 ;
}
A voir également:
- Eliminer les commentaires d'un fichier c
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
2 réponses
Merci de rester sur ton post : https://forums.commentcamarche.net/forum/affich-26564394-elemine-les-commentaire-dont-un-fichier-c
Bonsoir,
Merci de rester sur ton post initial :
https://forums.commentcamarche.net/forum/affich-26564394-elemine-les-commentaire-dont-un-fichier-c
Je ferme le sujet.
Merci de rester sur ton post initial :
https://forums.commentcamarche.net/forum/affich-26564394-elemine-les-commentaire-dont-un-fichier-c
Je ferme le sujet.