Autor
|
Tema: Ayuda con cadenas. (Leído 10,402 veces)
|
User
Desconectado
Mensajes: 31
|
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
Mensajes: 3.158
I'Love...!¡.
|
usa strtok()Dulces Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
User
Desconectado
Mensajes: 31
|
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
|
O sea, tienes tres variables: - Hola como estas ? - Yo muy bien ? - Que bien! Y de ahí quieres sacar 6 variables: - 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
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
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
Mensajes: 3.158
I'Love...!¡.
|
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
Mensajes: 31
|
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
Mensajes: 31
|
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 #include <stdio.h> #include <string.h> int main () { char str[] ="Hola como estas ?"; char * pch; char * valor1; char * valor2; pch = strtok (str ," "); // Empiezo a buscar la 1 coincidencia del espacio en blanco while (pch != NULL) { valor1 = (pch); // Aqui se almacena la 1 palabra de la frase separa por el espacio en blanco pch = strtok (NULL , ""); // Aqui ya no le pongo el espacio en blanco porque deseo el resto de la frase completa valor2 = (pch); // Almaceno el resto de la frase en la variable break; // Interrumpo el bucle pues como dije solo queria obtener la 1 palabra con el espacio como delimitador } printf ("Este es el 1 valor: %s\n", valor1 ); printf ("Este es el 2 valor: %s\n", valor2 ); return 0; }
Bueno amigos creo que es todo, gracias !!!!!!!!!!!!
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas! Asi esta bien, pero puedes hacerlo un poco menos complicado: char cadena[UNA_CANTIDAD],*primera,*resto; if(primera) resto = cadena + strlen(primera ) + 1; //pasamos al siguiente caracter despues del primer espacioelse //no hay espacios en blanco
O si no estas familiarizado con la aritmetica de punteros, esta otra: char cadena[UNA_CANTIDAD],*primera,*resto; if(primera) resto = &cadena [strlen(primera ) + 1]; //pasamos al siguiente caracter despues del primer espacioelse //no hay espacios en blanco
¡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
Mensajes: 31
|
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. char cadena[UNA_CANTIDAD],*primera,*resto; primera = strtok(cadena ," "); // Quiere decir que en la variable primera se almacena siempre la primera palabra segun la condicion dada ? if(primera) // Si hay un dato en en la variable primera es decir que por defecto suponemos que se obtiene el 1 valor ? 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// Y lo del else lo omiti porque siempre se habra espacios en blanco esta bien ?
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda con cadenas
Programación Visual Basic
|
Mr pom0
|
1
|
1,498
|
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,623
|
13 Marzo 2014, 05:30 am
por leosansan
|
|
|
Ayuda Acumulador de cadenas en C
Programación C/C++
|
AxelIglesias
|
1
|
1,943
|
7 Noviembre 2016, 21:42 pm
por MAFUS
|
|
|
ayuda con las cadenas
Programación C/C++
|
piyor6
|
8
|
3,812
|
15 Abril 2018, 03:22 am
por Kenji-chan
|
|
|
Ayuda con fichero y cadenas en C
Programación C/C++
|
luar79
|
4
|
4,470
|
7 Mayo 2022, 17:56 pm
por K-YreX
|
|