C/Visual C - Leer archivo de texto

   
Vista:

Leer archivo de texto

Publicado por Juan (2 intervenciones) el 13/03/2009 20:15:52
Hola!, Estoy recien empezando con esto de C, y me ha surgido una duda. Tengo que leer de un archivo de texto, como me conviene hacerlo?? Se que hay funciones por ejemplo fread pero a esta le tenes que indicar el tamaño maximo de la linea que vas a levantar del texto. Lo que quiero hacer es ir levantando de a una linea en un vector de char dinamico, osea ir pidiendo tanta memoria como necesite de manera de no desperdiciarla. Lo que no quiero hacer es por ejemplo pedir memoria para 200 caracteres si tengo que levantar una linea de tan solo 10. Es posible hacer eso??? Desde ya muchas gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Leer archivo de texto

Publicado por jose (21 intervenciones) el 21/03/2009 14:41:45
#include< stdio.h >
#include< string.h >
#include< malloc.h >


// Modo de almacenar cadena en un archivo.
// -----------------------------
// 1 - Largo de cadena.
// 2 - Cadena.

/* mian :*/
void main()
{
//*************************************************************************************
//*************************************************************************************
// ESCRIBIENDO....
//*************************************************************************************
//*************************************************************************************
char Cadena[1024];
short Largo;
FILE * file;

// abrimos un archivo nuevo para escribirlo - modo binario.
file = fopen( "c:\test.txt", "wb" );

//------------------------>
// registro1...
//------------------------>
strcpy( Cadena, "Esto es una prueba..." ); // nuestra cadena a almacenar.
Largo = strlen( Cadena ) + 1; // largo de nuestra cadena + terminacion null = 0.

// Guardando en un archivo...
fwrite( &Largo, 1, sizeof(short), file ); // largo de cadena..
fwrite( Cadena, 1, Largo, file ); // cadena.

//------------------------>
// registro2...
//------------------------>
strcpy( Cadena, "Hola mundo..." ); // nuestra cadena a almacenar.
Largo = strlen( Cadena ) + 1; // largo de nuestra cadena + terminacion null = 0.

// Guardando en un archivo...
fwrite( &Largo, 1, sizeof(short), file ); // largo de cadena..
fwrite( Cadena, 1, Largo, file ); // cadena.

// cerrando archivo escritura...
fclose( file );








//*************************************************************************************
//*************************************************************************************
// LEYENDO....
//*************************************************************************************
//*************************************************************************************
char * tmp;

// abrimos el archivo para leerlo - modo binario.
file = fopen( "c:\test.txt", "rb" );

//------------------------>
// registro1...
//------------------------>
// leemos el largo del texo...
fread( &Largo, 1, sizeof(short), file ); // largo de cadena..
tmp = (char *)malloc( Largo ); // creamos una variable ajustada al largo de cadena - con malloc o con new.
fread( tmp, 1, Largo, file ); // leemos la cadena

// mostrando en pantalla...
printf( " Largo = %i ", Largo );
printf( "Cadena = %s ", tmp );
free( tmp ); // liberamos variable anterior - free - delete.

//------------------------>
// registro2...
//------------------------>


// leemos el largo del texo...
fread( &Largo, 1, sizeof(short), file ); // largo de cadena..
tmp = new(char[Largo]); // c++ creamos una variable ajustada al largo de cadena - con new.
fread( tmp, 1, Largo, file ); // leemos la cadena

// mostrando en pantalla...
printf( " Largo = %i ", Largo );
printf( "Cadena = %s ", tmp );
delete [] tmp; // c++ liberamos variable anterior - delete.


// cerrando archivo de lectura...
fclose( file );
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar