Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] problema con cadena de caracteres, en c

Estas en el tema de problema con cadena de caracteres, en c en el foro de C/C++ en Foros del Web. tengo una duda pongale que tengo esta cadena de caracteres(vector tipo char) "hola como andas bien vos que bien muy bien" y quiero sacar una ...
  #1 (permalink)  
Antiguo 04/10/2013, 21:33
 
Fecha de Ingreso: septiembre-2010
Mensajes: 101
Antigüedad: 13 años, 7 meses
Puntos: 0
problema con cadena de caracteres, en c

tengo una duda

pongale que tengo esta cadena de caracteres(vector tipo char)

"hola como andas bien vos que bien muy bien"

y quiero sacar una palabra de ahi para guardarla en un vector auxiliar

como podria hacerlo?
que funcion de string.h podria usar, si es que hay para este tipo de cosas

gracias por su ayuda, con sus respuestas podre seguir con el ejercicio
  #2 (permalink)  
Antiguo 04/10/2013, 21:49
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Respuesta: problema con cadena de caracteres, en c

Lo que buscas es el clasico problema de la subcadena.

En string.h tienes una funcion llamada strstr que te regresa un puntero a la primera ocurrencia de una patron en la cadena.
Con eso puedes saber donde esta la cadena qeu buscas.
Despues seria cuestion que copies caracter a caracter hasta encontrar un espacio.

Saludos
  #3 (permalink)  
Antiguo 04/10/2013, 21:56
 
Fecha de Ingreso: septiembre-2010
Mensajes: 101
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: problema con cadena de caracteres, en c

muchisimas gracias, ya estoy investigando como usar esa funcion!
  #4 (permalink)  
Antiguo 05/10/2013, 13:44
 
Fecha de Ingreso: octubre-2012
Mensajes: 33
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: problema con cadena de caracteres, en c

Tené en cuenta que con esa función si tenes la palabra casado y buscas casa va a devolver verdadero aunque técnicamente no sea cierto. Vas a tener que pensar alguna variante, como contar las letras o algo así para completar el proceso
  #5 (permalink)  
Antiguo 05/10/2013, 14:58
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: problema con cadena de caracteres, en c

Y la otra opcion es tokenizar por espacios y signos de puntuacion para obtener una lista de palabras, no se si el proceso será mas lento pero te ahorras comprovaciones

Código C:
Ver original
  1. char frase[] = "Una frase, como ejemplo. Otra cosa.";
  2. char *palabra, objetivo[] = "ejemplo";
  3.  
  4. //inicias el tokenizado
  5. if((palabra = strtok(frase, " ,.:;-'"))) {
  6.     while(palabra) {
  7.         //comparas
  8.         if(!strcmp(palabra, objetivo)) {
  9.             //ya tienes la palabra, la guardas donde quieras
  10.             printf("Encuentra '%s'\n", palabra);
  11.         }
  12.         //siguiente token
  13.         palabra = strtok(0, " ,.:;-'");
  14.     }
  15. }

El tokenizado por signos de puntuacion sirve para separar correctamente las palabras, y los otros signos es por si vas a usarlo con algun idioma que la escritura normal contemple el uso de apostrofes, guiones, etc (tendrias que añadir parentesis, interrogantes y todos los signos que se te ocurran)

Saludos
vosk
  #6 (permalink)  
Antiguo 06/10/2013, 00:37
 
Fecha de Ingreso: octubre-2012
Mensajes: 33
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: problema con cadena de caracteres, en c

También podes hacer una búsqueda manual por fuerza brutal, leer el primer carácter y comparar con tu palabra carácter por carácter hasta el final de la palabra buscada o hasta una discrepancia. Si hay una discrepancias repites desde la posición 2 de la frase y así sucesivamente... Si estas cursando alguna materia seguramente pretendan algo así
  #7 (permalink)  
Antiguo 06/10/2013, 19:39
 
Fecha de Ingreso: septiembre-2010
Mensajes: 101
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: problema con cadena de caracteres, en c

muchisimas gracias a todos, estoy probando todo lo que me dijeron, apenas me salga lo marco como solucionado y lo pongo aca.

Etiquetas: cadena, caracteres, funcion, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:59.