elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda para dividir una frase con Strtok
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda para dividir una frase con Strtok  (Leído 2,631 veces)
Ccomplica

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Ayuda para dividir una frase con Strtok
« en: 23 Noviembre 2013, 19:29 pm »

Buenas tardes gente! Tengo en mi codigo un algoritmo para guardar en 3 variables de tipo Cadena, las palabras de la frase divididas por un caracter espacio. Pero necesito diferenciar y hacer que en el tercer parametro me divida pero dejando de tomar en cuenta los espacios, por ejemplo, en este momento si yo ingreso:

Hola hola123 hola

el algoritmo me guarda
comando=Hola
parametro1=hola123
parametro2=hola

en cambio si le ingreso....

Hola hola123 hola aasdas asdasd

ya no me guarda nada y me da segmentation fault.

Yo necesito ingresar en parametro2 una cadena que puede contener espacios tambien.

Aca el codigo:

Código
  1.        fgets(frase,100,stdin); //frase es un arreglo de caracteres de tamaño 100.
  2.        segmento=strtok(frase, " "); //parametro1, comando y parametro2 son un typedef char* Cadena
  3.        contador=0;
  4.        while(segmento!=NULL){
  5.             if(contador == 0)
  6.                comando=segmento;   // GUARDA EL COMANDO.
  7.  
  8.             if(contador == 1)
  9.                parametro1=segmento;    // GUARDA EL PRIMER PARAMETRO.
  10.  
  11.             if(contador == 2)
  12.                parametro2=segmento;    // GUARDA EL SEGUNDO PARAMETRO.
  13.  
  14.             segmento=strtok(NULL," ");
  15.             contador++;
  16.    }

como puedo modificarlo para que haga lo que yo quiero?


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda para dividir una frase con Strtok
« Respuesta #1 en: 24 Noviembre 2013, 19:19 pm »

Para cambiar el separador solo tienes que cambiar la cadena pasada a strtok como segundo argumento (no tiene porque ser la misma en cada llamada).

Si el objetivo de ese fragmento solo es obtener un maximo de tres tokens (el comando y sus dos parametros) debes cambiarlo a:
Código
  1. fgets(frase, 100, stdin);
  2. parametro1 = NULL;
  3. parametro2 = NULL;
  4. contador = 0;
  5. if ((comando = strtok(frase, " ")) != NULL){
  6.   contador++;
  7.  
  8.   if ((parametro1 = strtok(NULL, " ")) != NULL){
  9.      contador++;
  10.  
  11.      if ((parametro2 = strtok(NULL, "\n")) != NULL)
  12.         contador++;
  13.   }
  14. }

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como hago para dividir un archivo de video .DAT
Multimedia
jamesaddicted 1 2,351 Último mensaje 11 Octubre 2004, 14:38 pm
por fffher
strtok para la clase string [?]
Programación C/C++
.:BlackCoder:. 2 3,576 Último mensaje 16 Junio 2010, 00:26 am
por .:BlackCoder:.
Para opinar sobre esta frase de Stephen Hawking
Foro Libre
MG2010 3 3,029 Último mensaje 21 Octubre 2010, 19:45 pm
por linux1
Ayuda, no puedo dividir los archivos con Winrar
Software
zarzuiscar 9 4,949 Último mensaje 23 Enero 2011, 23:49 pm
por zarzuiscar
[MOD] Ayuda Dividir DVD 8GB
Software
plumera 2 3,317 Último mensaje 21 Junio 2011, 08:52 am
por SuperDraco
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines