Eliminer les commentaires d'un fichier c
Fermé
hafed22
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
GrandCaribou Messages postés 28793 Date d'inscription Statut Modérateur Dernière intervention -
GrandCaribou Messages postés 28793 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
- Comment ouvrir un 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.