<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>
Hola lista:<br><br>   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.<br><br>Muchas gracias a todos<br><br><br><br>> Date: Thu, 10 Jan 2008 10:49:03 -0500<br>> From: leonel06033@cfg.jovenclub.cu<br>> To: cconclase@listas.conclase.net<br>> Subject: Re: [C con Clase] Mascara para sscanf<br>> <br>> <br>> Hola lista:<br>> <br>>   Tengo un problema al leer cadenas con sscanf. Tengo un cadena de<br>> caracteres que tiene esta forma:<br>> <br>>    hasaslfjkalfjaldfjalñfkaj?\nañlfjkañlfjañlfjafkljasfkl?\nafkljañlfjañlfjafdfljañlfjadflaj?\n<br>> <br>> Y tengo que separarlas por el interrogante. Lo que primero pense es<br>> utilizar sscanf de la siguiente manera:<br>>   sscanf (cadena_origen,"%[^?]?\n",cadena_destino)<br>> <br>> Hasta aqui bien pero mi sorperesa es que de pronto me empezaron a<br>> llegar cadenas que tenian el caracter ? intercalado del estilo<br>> <br>> asfljaslfjalf???alsfjañlfjs?\nañlfjkañlfjañlfjalkfj????alsfjalf?\n<br>> <br>> Ahora tengo que conseguir dividir la cadena por el interrogante mas<br>> el salto de linea. ¿Alguien me puede decir cual seria la mascara de<br>> sscanf correcta?<br>> <br>> Muchas gracias<br>> <br>> <br>> ----------------------------------<br>> <br>> Bueno amigo, como ya otros te han recomendado, to te aconsejo la<br>> function strtok, que te explico como trabaja.<br>> <br>> la function de cabecera es:<br>> <br>> char *strtok(char *s1, const char *s2);<br>> <br>> descripción:<br>> una "secuencia de llamdas" a strtok() divide la cadena S1 en saltos<br>> o tokens (partes lógicas), como palabras, en ua línea de texto,<br>> saparados por caracteres, contenidos en la cadena S2, la primera<br>> lamada contiene s1 como primer argumento, y las llamadas seguidas de<br>> la primera, para continuar esa divición de la misma cadena,<br>> contienen NULL como primer argumento, para cada llamada se regresa<br>> un apuntador al token o ficha actual, si si cuando la funtion es<br>> llamada ya no hay mas token o fichas, se regresa null.<br>> <br>> a la function esta en la biblioteca "string.h"<br>> aqui te pongo un ejemplo:<br>> <br>> #include <stdio.h><br>> #include <string.h><br>> <br>> main()<br>> {<br>>    char string[]= "esta es una sentencia con 7 token";<br>>    char *tokenPtr;<br>> <br>>    printf("La cadena a dividir es:\n &s\n", string);<br>> <br>>    tokenPtr = strtok(string, " ");<br>> <br>>    while (tokenPtr != NULL){<br>>       printf("%s\n", tokenPtr);<br>>       tokenPtr = strtok(NULL, " ");<br>>    }//del while<br>> }<br>> <br>> descripción del ejercicio:<br>> <br>> la funtion se utiliza para dividir una cadena en palabras o tokens,<br>> un token es una serie de caracteres separados por caracteres<br>> delimitantes, determinados por uno mismo, por ejemplo en una linea<br>> de texto, cada palabra puede ser considerada como un token, y los<br>> espacios en blancos que separan las palabras pueden ser considerados<br>> delimitantes.<br>> Se requiere de multiples llamadas a strtok() para dividir una cadena<br>> en tokens (suponiendo que la cadena contenga mas de uno de ellos), <br>> la primera llamada a strtok() contiene dos argumentos, la primera es<br>> la cadena que va a ser dividida, y la seguda una cadena que contiene<br>> los caracteres que separaran a los token o palabras, el enunciado<br>> <br>> tokenPtr = strtok(string, " ");<br>> <br>> asigna a tokenPtr un aputador al primer token en string, el segundo<br>> argumento de strtok " ", indica que los token o palabras en string<br>> estan dividos por espacios en blanco, si se pone otro caracter,<br>> entonces se separara la cadena string por el caracter o cadena que<br>> pongamos, esto iniciara el primer token, la funtion a continuación<br>> encuentra el siguiente caracter delimitante dentro de la cadena y lo<br>> reemplaza con un caracter nulo ('\0'), con esto se da por terminado<br>> el token o palabra actual, la funtion strtok() guarda un apuntador<br>> al caracter que sigue al token o palabra en string, y regresa un<br>> apuntador al token o palabra actual.<br>> la siguente llamada a strtok(), para continuar la divición de<br>> string,  contiene a NULL como primer argumento, este argumento<br>> indica a strtok() que debera continuar la divición a partir de la<br>> localización en string, guardada por la ultima llamada a strtok(),<br>> si despues de llamar a strtok ya no quedan tokens, strtok() regresa<br>> NULL, por esto es que en el siclo se pone while (tokenPrt != NULL)<br>> para cuando llege al final pare.<br>> <br>> a otra cosa, la funtion modifica la cadena original es decir string.<br>> <br>> bueno amigo, espero esto te sirva para algo, toda esta explicacion<br>> la tome de un libro que tengo, que lo explica bien claro.<br>> <br>> saludos si tienes dudas solo prgunta.<br>> <br>> <br>> <br>> <br>> <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 al minuto las principales noticias de tu ciudad <a href='http://deportes.es.msn.com/' target='_new'>MSN Deportes</a></body>
</html>