Advertisement
AntonioVillanueva

Elimina comentarios pone tabulaciones ....

Aug 2nd, 2016
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.65 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4.  
  5. int main(){
  6.    
  7.     FILE *F;
  8.     char cadena[100];
  9.     char output[100];
  10.     const char *sust={"    "};//Patron sustitucion
  11.     char *pto=NULL;
  12.     int nivel=0;//NIvel tabulacion segun { }
  13.     int comentario=0;//Dentro de comentarios /* */
  14.     int comentarioB=0;//Dentro de comentarios //
  15.     int vacia=1;
  16.    
  17.     printf ("Size %d\n", strlen (sust));
  18.     F=fopen ("tcp_vegas.c","r");
  19.     if (!F){puts ("Error \n");}
  20.     else  {puts ("Ok\n");}
  21.    
  22.     while (fgets (&cadena[0], 100, F)){
  23.  
  24.         //No se espacian comentarios
  25.         if ( (strstr (cadena,"/*"))){comentario=1;}//Inicio comentario /* */
  26.         if ( (strstr (cadena,"//"))){comentarioB=1;}//Inicio comentario tipo //    
  27.         //if ( (strstr (cadena,"*/"))){comentario=0;}
  28.        
  29.         //if ( (strstr (cadena,"{"))){nivel++;}
  30.         if ( (strstr (cadena,"}"))){nivel--;}
  31.                
  32.         //Si la linea esta vacia no se toca
  33.         for (int i=0;(i<100 || !cadena[i]);i++){
  34.             if (cadena[i]!=' '){ vacia=1;}//No esta vacio
  35.             else{vacia=0;}
  36.         }
  37.        
  38.        
  39.         //deteccion y eliminacion primer espacio en comentarios
  40.         if (comentario && cadena[0]==' ' && vacia){
  41.             memmove (&cadena[0],&cadena[1],strlen(cadena)+1);
  42.         }
  43.        
  44.         pto=output;
  45.        
  46.         if (!comentario && !comentarioB && vacia){
  47.             for (int i=1;i<=nivel;i++){
  48.                 pto=memcpy(pto,sust,strlen(sust));
  49.                 pto+=strlen(sust);
  50.             }          
  51.         }
  52.        
  53.         if ( (strstr (cadena,"*/"))){comentario=0;}//Fin comentario /* */
  54.         comentarioB=0;//Fin de comentarios en linea hasta el fin de linea      
  55.        
  56.         if ( (strstr (cadena,"{"))){nivel++;}//Inicio { tabulacion     
  57.        
  58.         memcpy(pto,&cadena,strlen(cadena)+1);//Copia hasta el final ....
  59.        
  60.  
  61.         printf ("%s",output);
  62.  
  63.     }
  64.    
  65.     fclose (F);
  66. return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement