[C con Clase] Mascara para sscanf

Adrian Ferreres Esteller raro82 en hotmail.com
Lun Feb 4 09:15:50 CET 2008


Hola Steven:

    Siento el retraso de la contestacion. He estado muy ocupado con el trabajo y apenes he mirado el correo hasta hoy y la verda es que entre todos los mails de la lista se me habia pasado tu contestacion a mi problema. Quiero darte gracias por la solucion que seguro que aplicare a mi codigo y además en mas de una ocasion y gracias por el tiempo que le has dedicado. La proxima vez estare mas atento a los mails de la lista.


Adrian

> Date: Tue, 15 Jan 2008 13:19:22 +0100
> From: stevenrichard.davidson en gmail.com
> To: cconclase en listas.conclase.net
> Subject: Re: [C con Clase] Mascara para sscanf
> 
> Hola Adrián,
> 
> 2008/1/14 Adrian Ferreres Esteller <raro82 en hotmail.com>:
> >
> >  Hola lista:
> >
> >    No, si la funcion strtok ya la conocia, la cosa es que resulta que el
> > código que estoy tratando es bastante extenso y esa llamada a la funcion
> > sscanf con esa mascara se usa en muchas lineas y en diferentes funciones.
> > Por supuesto la mascara es una constante definida en un .h por lo tanto lo
> > mas comodo y lo que implicaba tocar menos codigo es cambiar la mascara en
> > las cabeceras.... ahora si me decis que no hay mascara posible me tendre que
> > meter en el código y modificarlo.
> >
> 
> Bueno, pues haciendo algunas pruebas, tengo que decirte que no he
> tenido muchos problemas, al menos no los que has expuesto. Sí
> aconsejaría modificar algo de tu código. Éste es el código de prueba
> que hice:
> 
> #include <cstdio>
> 
> using namespace std;
> 
> int main()
> {
>   const char szOrigen[] =
> "hasaslfjkalfjaldfjalñfkaj?\nañlfjkañlfjañlfjafkljasfkl?\nafkljañlfjañlfjafdfljañlfjadflaj?\n";
>   char szDestino[1024] = "";
> 
>   int c=0, a=0;
>   for( int n=0; EOF != c && n < sizeof szOrigen; n++ )
>   {
>     if( (c = sscanf( szOrigen+n, "%[^?\n]%n", szDestino, &a )) > 0 )
>     {
>       printf( "\"%s\"\n", szDestino );
>       n += a;
>     }
>   }
> 
>   puts( "\nSaliendo..." );
>   getchar();
>   return 0;
> }
> 
> Como puedes ver, he usado el especificador %n para obtener la cantidad
> de caracteres guardadas, hasta el momento. Este valor es guardado en
> la variable 'a' para incrementar correctamente la variable 'n' la cual
> sirve de índice o desplazamiento a 'szOrigen'. También date cuenta del
> incremento de 'n' en cada iteración para poder saltarnos ese carácter
> que hizo detener la lectura de 'sscanf()', que en el ejemplo anterior
> puede ser '?' o incluso '\n'.
> 
> 
> Espero que esto te ayude.
> 
> Steven
> 
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

_________________________________________________________________
Tecnología, moda, motor, viajes,…suscríbete a nuestros boletines para estar siempre a la última
Guapos y guapas, clips musicales y estrenos de cine. 
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080204/0b1e85d1/attachment.html>


Más información sobre la lista de distribución Cconclase