Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: gonzaloi en 2 Abril 2011, 23:16 pm



Título: Guardar entrada estandar en un archivo de texto
Publicado por: gonzaloi en 2 Abril 2011, 23:16 pm
Hola gente !! A ver si alguien me puede ayudar a guardar unos datos que viene desde entrada estandar (tiene saltos de linea) y los quiero guardar tal como viene en un archivo de texto.

Se me ocurrio lo siguiente:

FILE* archivo= fopen("prueba.txt", "wt");
char* entrada;
gets(entrada);
fprintf(archivo, entrada);

Si por ejemplo escribo desde teclado:
Hola
me
llamo
asi

Solo me guarda "Hola". Acaso el printf escribe hasta encontrar un salto de linea ??

Si es asi, que me aconsejan ?????

Desde ya muchas gracias !!


Título: Re: Guardar entrada estandar en un archivo de texto
Publicado por: Akai en 2 Abril 2011, 23:24 pm
No, tu problema es que gets si finaliza con el final de linea:

http://cplusplus.com/reference/clibrary/cstdio/gets/

Por otro lado, imagino que el código que has puesto es un mero ejemplo y realmente no estás usando eso... Porque si es el caso,, tienes un problema con el tamaño de "entrada".


Título: Re: Guardar entrada estandar en un archivo de texto
Publicado por: gonzaloi en 2 Abril 2011, 23:37 pm
Si es verdad, esta mal puesto, seria char entrada[MAX];

Bueno, voy a ver que hago :S.

Gracias por la ayuda !!


Título: Re: Guardar entrada estandar en un archivo de texto
Publicado por: gonzaloi en 2 Abril 2011, 23:44 pm
Es posible guardar en una variable una entrada estandar que tenga saltos de lineas ??? O tendria que ir leyendo linea por linea ??


Título: Re: Guardar entrada estandar en un archivo de texto
Publicado por: Akai en 2 Abril 2011, 23:48 pm
Leer linea por linea es la opción más asequible. Para lo otro deberías recurrir si usases C++ al método getline que te permite modificar el carácter que finalzia la linea, cambiando \n por \0.

Por otro lado, no es aconsejable que lo intentes todo de golpe, ya que una de dos, vas a necesitar un buffer enorme por si acaso, o puedes terminar desbordando el buffer si no vas con cuidado.

Como ya dije, hacerlo linea por linea es la opción más sencilla.


Título: Re: Guardar entrada estandar en un archivo de texto
Publicado por: gonzaloi en 2 Abril 2011, 23:57 pm
Si tenes razon, pero es para un ejercicio muy simple. Asique no hay problema con el buffer

Lo que me interesa es saber si hay forma de guardar la entrada con saltos de linea en una variable ???

Estoy laburando con C


Título: Re: Guardar entrada estandar en un archivo de texto
Publicado por: leogtz en 3 Abril 2011, 00:04 am
Puedes intentar con algo como esto:

Código
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.    unsigned int i = 0;
  5.    char c;
  6.    char string[100];
  7.    while((c = getchar()) != EOF)
  8.    string[i++] = c;
  9.    string[i] = '\0';
  10.    printf("\n\nString : [%s]\n", string);
  11.    return 0;
  12. }
  13.  

Teniendo ya la string, solo la volcas al archivo de texto y ya.


Título: Re: Guardar entrada estandar en un archivo de texto
Publicado por: gonzaloi en 3 Abril 2011, 00:16 am
Gracias !! Esta buena tu idea !! Por lo visto no existe una funcion que haga el laburo solita.

Saludos !!


Título: Re: Guardar entrada estandar en un archivo de texto
Publicado por: leogtz en 3 Abril 2011, 00:23 am
Creo que no, pero igual puedes hacer el trabajo con lo que te dejé abajo.