Copiar en archivo frases con varias líneas(renglones)[C]

Iniciado por DanielPy, 16 Mayo 2015, 21:55 PM

0 Miembros y 1 Visitante están viendo este tema.

DanielPy

Hola a todos.-

CitarCada vez que emites
un juicio o una crítica,
Estás enviando algo que
terminará por volver a ti.-
Para hacer algo como esto se me antoja declarar una estructura con 4 variable char y 4 int (índice) para poder luego buscar alguna palabra que haga referencia a la frase y poder imprimirla filtrándola por el índice, consideran que estoy bien encaminado o lo arian de otra manera.-

Desde ya muchas gracias por el tiempo que le dediquen al tema.-

Saludos.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

ivancea96

No entiendo cuál es el problema. No entiendo qué es lo que quieres hacer. ¿Escribir cadenas de caracteres en un archivo?

DanielPy

Hola.
Lo que quiero es escribir en un archivo frases con más de un renglón (esto de renglón desconozco si es correcto) y luego recuperar lo escrito para mostrarlo en pantalla, lo que pasa es que me parece que debería tener un índice para hacer un filtro para cada frase, si lo hago con un bucle no sé cómo hacer para que luego el programa sepa donde comienza una frase y cuando termina y comienza la siguiente (que lio).-
Espero que se entienda un poco más.-

Saludos.
Daniel   
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

ivancea96

Un renglón supongo que te refieres a un salto de linea. Eso es el caracter '\n'.
Para leer linea a linea, basta detectar ese caracter mientras lees.

DanielPy

Hola Ivancea96.
Evidentemente no logro ser lo suficientemente claro, si estuviéramos frente a la misma computadora estoy segurísimo que me entenderías pero escribiendo no logro expresar con claridad lo que deseo hacer (por lo menos en este caso).-
Ahora mismo se me antoja declarar un arreglo char de 10 x 80 meterlo en un bucle y con esto en cada Enter logro el carácter de nueva línea, luego al volcarlo a un archivo obtendria el cometido (me parece), lo que no puedo entender todavía es como imprimirlo en pantalla desde el archivo.-
Ejemplo:
CitarCada vez que emites
un juicio o una crítica,
Estás enviando algo que
terminará por volver a ti.-
Suponiendo que para buscar en el archivo la frase recuerdo que contenía la palabra algo, ¿Qué patrón (índice) utilizo para mostrar la frase completa?.-
Voy a seguir practicando, seguramente no estoy muy lejos de lograrlo, si tenes algo más para aportar, muy agradecido.-

Saludos.
Daniel   
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

ivancea96

Una vez encontrada la palabra, basta separar la frase por puntos. O por saltos de linea, como quieras hacerlo.

DanielPy

Hola.
Sólo a titulo aclaratorio, no olvides que el archivo va a tener por ej. 50 frases distintas, tengo que implementar alguna manera para saber dónde comienza y termina una determinada frase.-
Por el momento, el ej. Que dejo a continuación me parece viable y sino podría dejar un espacio en blanco entre una frase y otra.- 

CitarCada vez que emites                                                                                        1
un juicio o una crítica,                                                                                       1
Estás enviando algo que                                                                                    1
terminará por volver a ti.-                                                                                 1
Abraza las cosas y personas malas como si fueran tu más preciada joya,              2
son tus más grandes maestros de paciencia sabiduría y amor                               2
y cuando lo abrazas dejan de causar dolor.-                                                        2
-------------------------------------                                                                         3 
-------------------------------------                                                                         3
Por el momento(atento a mis conocimientos) me parece una aceptable solución.-     

Saludos.
Daniel   
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

rir3760

Cita de: DanielC# en 17 Mayo 2015, 19:07 PMSólo a titulo aclaratorio, no olvides que el archivo va a tener por ej. 50 frases distintas, tengo que implementar alguna manera para saber dónde comienza y termina una determinada frase.
Puedes colocar primero una linea cuyo único contenido sea el numero de lineas que componen la frase la cual viene a continuación, siguiendo tu ejemplo la información en el archivo se modificaría a:
4
Cada vez que emites
un juicio o una crítica,
Estás enviando algo que
terminará por volver a ti.
3
Abraza las cosas y personas malas como si fueran tu más preciada joya,
son tus más grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.
...


La lectura del archivo seria, mas o menos, así:
#include <stdio.h>
#include <stdlib.h>

#define NOM_ARCHIVO  "Input.txt"
#define MAX_CHARS  4096

int main(void)
{
   FILE *in;
   char linea[MAX_CHARS];
   unsigned num_lineas;
   unsigned i;
   int frase;
   
   if ((in = fopen(NOM_ARCHIVO, "r")) == NULL){
      perror(NOM_ARCHIVO);
      return EXIT_FAILURE;
   }
   
   frase = 1;
   while (fgets(linea, MAX_CHARS, in) != NULL && sscanf(linea, "%u", &num_lineas) == 1){
      printf("Frase %d:\n", frase);
     
      for (i = 0; i < num_lineas && fgets(linea, MAX_CHARS, in) != NULL; i++)
         printf("%s", linea);
     
      frase++;
   }
   fclose(in);
   
   return EXIT_SUCCESS;
}


Un saludo
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