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