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

 

 


Tema destacado: Introducción a Git (Primera Parte)


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

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Ayuda con cadenas.
« en: 16 Julio 2012, 09:31 am »

Saludos a todos los lectores y miembros del foro, tengo una duda aunque para algunos es basica para mi es algo nuevo, intento aprender a programar C en linux y mi consulta es la siguiente :

Tengo las cadenas :

Hola como estas ?
Yo muy bien ?
Que bien!

Cual es la funcion que me permite extraer siempre la primera palabra usando como delimitador
el espacio en blanco ( Siendo el resultado : "Hola","Yo","Que"), o con algun otro caracter como delimitador, pero siempre extrayendo lo de la derecha .. gracias a quien pueda ayudarme, espero haberme dejado entender.



En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Ayuda con cadenas.
« Respuesta #1 en: 16 Julio 2012, 10:50 am »

usa strtok()

Dulces Lunas!¡.


En línea

The Dark Shadow is my passion.
User

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Re: Ayuda con cadenas.
« Respuesta #2 en: 16 Julio 2012, 17:38 pm »

Muchas gracias por la respuesta BlackZeroX , pero creo que no me explique bien, lo que deseo no es un array, si no separar la primera palabra de cada frase de las demas palabras, y almacenar el resultado en 2 variables, espero se me haya entendido y gracias nuevamente :)

 "Hola"                 "como estas ?"
  "Yo"                   "muy bien ?"

Algo asi es lo que deseo obtener
En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Ayuda con cadenas.
« Respuesta #3 en: 16 Julio 2012, 17:45 pm »

O sea, tienes tres variables:

Código:
- Hola como estas ?
- Yo muy bien ?
- Que bien!

Y de ahí quieres sacar 6 variables:

Citar
- Hola
- como estas ?
- Yo
- muy bien ?
- Que
- bien!

Si es eso, no sé si hay alguna función que haga eso. Sin embargo puedes utilizar un bucle for, y en el momento que encuentres un espacio en una de las cadenas, haces lo siguiente:

1. Copias el carácter en otra cadena
2. Eliminas el carácter.
3. Se repite el bucle hasta llegar al final.

Saludos!
« Última modificación: 16 Julio 2012, 17:50 pm por DickGumshoe » En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Ayuda con cadenas.
« Respuesta #4 en: 16 Julio 2012, 17:48 pm »

Muchas gracias por la respuesta BlackZeroX , pero creo que no me explique bien, lo que deseo no es un array, si no separar la primera palabra de cada frase de las demas palabras, y almacenar el resultado en 2 variables, espero se me haya entendido y gracias nuevamente :)

 "Hola"                 "como estas ?"
  "Yo"                   "muy bien ?"

Algo asi es lo que deseo obtener


Y eso es lo que haces (o puedes hacer) con strtok...

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Ayuda con cadenas.
« Respuesta #5 en: 16 Julio 2012, 19:41 pm »

Muchas gracias por la respuesta BlackZeroX , pero creo que no me explique bien, lo que deseo no es un array, si no separar la primera palabra de cada frase de las demas palabras, y almacenar el resultado en 2 variables, espero se me haya entendido y gracias nuevamente :)

Aun que sea lo has intentado?.

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
User

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Re: Ayuda con cadenas.
« Respuesta #6 en: 16 Julio 2012, 19:45 pm »

BlackZeroX : No aun no lo hize, ando en el trabajo y aqui no tengo donde, lo hago llegando a casa y gracias por el pendiente, cuidate.
En línea

User

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Re: Ayuda con cadenas.
« Respuesta #7 en: 16 Julio 2012, 21:54 pm »

Hola a todos nuevamente ya pude resolver la duda que tenia, GRACIAS DE VERDAD A TODOS LOS QUE ME AYUDARON : BlackZeroX, do-while, DickGumshoe, aqui les dejo el modo como lo hize lo pongo para que si otra persona tenga la misma duda lo vea y de paso me revisen el codigo haber si se puede optimizar, tal vez no uso adecuadamente las variables ? .. como les dije soy nuevo haber como m quedo a opinion de ustedes


Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main ()
  5. {
  6.  char str[] ="Hola como estas ?";
  7.  char * pch;
  8.  char * valor1;
  9.  char * valor2;
  10.  
  11.  pch = strtok (str," "); // Empiezo a buscar la 1 coincidencia del espacio en blanco
  12.  while (pch != NULL)
  13.  {
  14.    valor1 = (pch); // Aqui se almacena la 1 palabra de la frase separa por el espacio en blanco
  15.    pch = strtok (NULL, ""); // Aqui ya no le pongo el espacio en blanco porque deseo el resto de la frase completa
  16.    valor2 = (pch); // Almaceno el resto de la frase en la variable
  17.    break; // Interrumpo el bucle pues como dije solo queria obtener la 1 palabra con el espacio como delimitador
  18.  }
  19.  
  20.  printf ("Este es el 1 valor: %s\n", valor1);
  21.  printf ("Este es el 2 valor: %s\n", valor2);
  22.  return 0;
  23. }
  24.  


Bueno amigos creo que es todo, gracias !!!!!!!!!!!!
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Ayuda con cadenas.
« Respuesta #8 en: 16 Julio 2012, 22:28 pm »

¡Buenas!

Asi esta bien, pero puedes hacerlo un poco menos complicado:
Código
  1. char cadena[UNA_CANTIDAD],*primera,*resto;
  2.  
  3. primera = strtok(cadena," ");
  4.  
  5. if(primera)
  6.    resto = cadena + strlen(primera) + 1; //pasamos al siguiente caracter despues del primer espacio
  7. else
  8.    //no hay espacios en blanco
  9.  

O si no estas familiarizado con la aritmetica de punteros, esta otra:
Código
  1. char cadena[UNA_CANTIDAD],*primera,*resto;
  2.  
  3. primera = strtok(cadena," ");
  4.  
  5. if(primera)
  6.    resto = &cadena[strlen(primera) + 1]; //pasamos al siguiente caracter despues del primer espacio
  7. else
  8.    //no hay espacios en blanco
  9.  

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
User

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Re: Ayuda con cadenas.
« Respuesta #9 en: 16 Julio 2012, 23:38 pm »

do-while Gracias por responder nuevamente, proble el codigo y va muy bien hee, aqui mi interrogante :
 Elegi el 2 ejemplo, porque no se acerca de las aritmeticas de punteros.


Código
  1. char cadena[UNA_CANTIDAD],*primera,*resto;
  2.  
  3. primera = strtok(cadena," "); // Quiere decir que en la variable primera se almacena siempre la primera palabra segun la condicion dada ?
  4.  
  5. if(primera) // Si hay un dato en en la variable primera es decir que por defecto suponemos que se obtiene el 1 valor ?
  6.    resto = &cadena[strlen(primera) + 1]; //Aqui no me queda muy claro porque usas el strlen ? hasta donde se se usa para sacar la longitud de una palabra
  7. printf ("%s\n", resto);
  8. // Y lo del else lo omiti porque siempre se habra espacios en blanco esta bien ?
En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con cadenas
Programación Visual Basic
Mr pom0 1 1,502 Último mensaje 4 Marzo 2008, 19:06 pm
por Chefito
AYUDA Eliminar tabulaciones y \t de cadenas en ANSI C
Programación C/C++
el_nene_kpy 3 6,637 Último mensaje 13 Marzo 2014, 05:30 am
por leosansan
Ayuda Acumulador de cadenas en C
Programación C/C++
AxelIglesias 1 1,951 Último mensaje 7 Noviembre 2016, 21:42 pm
por MAFUS
ayuda con las cadenas
Programación C/C++
piyor6 8 3,818 Último mensaje 15 Abril 2018, 03:22 am
por Kenji-chan
Ayuda con fichero y cadenas en C
Programación C/C++
luar79 4 4,491 Último mensaje 7 Mayo 2022, 17:56 pm
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines