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 !!
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".
Si es verdad, esta mal puesto, seria char entrada[MAX];
Bueno, voy a ver que hago :S.
Gracias por la ayuda !!
Es posible guardar en una variable una entrada estandar que tenga saltos de lineas ??? O tendria que ir leyendo linea por linea ??
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.
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
Puedes intentar con algo como esto:
#include <stdio.h>
int main(void)
{
unsigned int i = 0;
char c;
char string[100];
while((c = getchar()) != EOF)
string[i++] = c;
string[i] = '\0';
printf("\n\nString : [%s]\n", string);
return 0;
}
Teniendo ya la string, solo la volcas al archivo de texto y ya.
Gracias !! Esta buena tu idea !! Por lo visto no existe una funcion que haga el laburo solita.
Saludos !!
Creo que no, pero igual puedes hacer el trabajo con lo que te dejé abajo.