[C con Clase] Mascara para sscanf

Adrian Ferreres Esteller raro82 en hotmail.com
Lun Ene 14 09:24:23 CET 2008


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.

Muchas gracias a todos



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


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