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

dividir frases en C

Estas en el tema de dividir frases en C en el foro de C/C++ en Foros del Web. hola, cuando se lee una línea de texto de un archivo con fgets(buf, TAM, fp), coge toda la linea entera, por ejemplo "Hoy es Domingo" ...
  #1 (permalink)  
Antiguo 13/12/2015, 11:02
 
Fecha de Ingreso: diciembre-2015
Mensajes: 1
Antigüedad: 8 años, 4 meses
Puntos: 0
dividir frases en C

hola, cuando se lee una línea de texto de un archivo con fgets(buf, TAM, fp), coge toda la linea entera, por ejemplo
"Hoy es Domingo"
¿como se podría dividir la frase que se guarda en buf en 3 cadenas diferentes?, que quede cadena1 "Hoy", cadena2 "es" y cadena3 "Domingo"

sin saber el tamaño de cada cadena para poder dividir cualquier frase de 3 palabras sin importar el tamaño de la palabra.
  #2 (permalink)  
Antiguo 13/12/2015, 13:51
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: dividir frases en C

sprintf(buf, "%s %s %s", cadena1, cadena2, cadena3);
Eso divide el buf que has leido desde el archivo en 3 strings, eso sí, asegurate de declarar 3 variables generosas >_<, si alguien sabe algo mejor que diga, a mi tambiem me interesa saber jeje
  #3 (permalink)  
Antiguo 13/12/2015, 14:10
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: dividir frases en C

Habéis probado con strtok? Como ventaja, que no hay desbordamiento de buffer... Como desventaja que modifica el buffer inicial

Código C:
Ver original
  1. char* cadena = " uno dos tres";
  2. char* palabra1, palabra2, palabra3;
  3.  
  4. palabra1 = strtok(cadena," ");
  5. palabra2 = strtok(0, " ");
  6. palabra3 = strtok(0, " ");
  7.  
  8. printf ("%s, %s, %s\n", palabra1,palabra2,palabra3);
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.
  #4 (permalink)  
Antiguo 13/12/2015, 14:13
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 1 mes
Puntos: 3
Respuesta: dividir frases en C

Puedes usar strtok para dividir la frase usando un bucle. Si lo quieres más optimizado para usar la memoria justa dentro del bucle buscas el espacio con strchr y con una simple resta obtienes el tamaño de la palabra y luego usas malloc para reservarla. Si no sabes cuantas palabras puede tener pues primero lo averiguas y luego reservas un array para todas con el tamaño de la más larga. Mira la biblioteca string.h que tiene varias funciones que te pueden interesar.

Etiquetas: dividir, frases
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 05:24.