[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