Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/06/2010, 13:10
gonzo13
 
Fecha de Ingreso: agosto-2008
Mensajes: 240
Antigüedad: 16 años
Puntos: 6
Corchetes escapeados

Buenas tardes-noches:

Tengo una duda con este programa en C. Tengo una cadena en la que si viene algún cierracorchete ']' éste ha de venir doble. El caso es que tengo que copiarlo a otra cadena sin mostrar los corchetes escapeados. Por ejemplo, si recibo "Hola[3]]" debería mostrar "Hola[3]". En el caso de que venga sólo un cierracorchete, significa que se ha acabado el campo.

He codificado esta función en un fichero a parte para hacer una prueba antes de incorporarlo a un código más extenso en el que conozco la longitud del campo que tengo que copiar. Con ese tamaño he despreciado el cierracorchete que delimita el fin de campo.

He implementado esto por ahora, pero con la cadena de prueba que uso no me funciona del todo bien:

Código C:
Ver original
  1. #include <stdio.h>
  2. #define TAM 23
  3.  
  4. int main()
  5. {
  6.  
  7.   char origen[]="Una de Bichos [2]]]]";
  8.   char destino[TAM];
  9.   int i;
  10.   int tamanio = 0;
  11.  
  12.   // relleno destino de '\0'
  13.  
  14.   for(i=0;i<TAM;i++)
  15.     destino[i]='\0';
  16.  
  17.  
  18.  
  19.   for(i=0; i < TAM; i++)
  20.     {
  21.       if(origen[i] == ']')
  22.     {
  23.       if(origen[i+1] == ']') // si viene dos ']' seguidos, guardo uno y el segundo lo obvio
  24.         {
  25.           destino[i] = origen[i];
  26.           i++; // me salto el segundo corchete
  27.         }    
  28.     }
  29.       else // si no viene un ']' guardo lo que venga (serán otros caracteres)
  30.     {
  31.       destino[i] = origen[i];
  32.     }
  33.     }
  34.  
  35.   printf("Campo origen: %s Campo destino: %s\n", origen, destino);
  36.  
  37.   return 0;
  38. }

Al final de la ejecución, destino debería contener la cadena "Una de Bichos [2]]"


Espero que alguien pueda ayudarme, porque no se me ocurre nada más.
Gracias de antemano,
gonzo