Leer y presentar archivo *.dat
Ya se que muchos se van a mofar y a criticar, etc. etc. para todos ellos mejor abstengase por favor, gracias.
Para los expertos ...
Tengo un archivo *.dat escrito en C separado por delimitadores (Pipes) y necesito recuperarlo y mostrarlo en pantalla (por consulta, hay 5 campos diferentes), lo que busco es el código fuente que alguien tenga por ahi de alguna aplicación similar para poder entenderla y tratar de hacer el que yo necesito, si es que lo tienen claro, agradezco su fina atención. ([email protected])
Para los expertos ...
Tengo un archivo *.dat escrito en C separado por delimitadores (Pipes) y necesito recuperarlo y mostrarlo en pantalla (por consulta, hay 5 campos diferentes), lo que busco es el código fuente que alguien tenga por ahi de alguna aplicación similar para poder entenderla y tratar de hacer el que yo necesito, si es que lo tienen claro, agradezco su fina atención. ([email protected])
Hola, acá abajo va el código (super simplificado) para leer un archivo con datos delimitados por el carácter '|' (¿pipes?). Le incluyo una forma básica de manejo de la excepción "failure", que podría lanzar un fallo de getline().
El programejo supone que los datos del archivo de entrada "in.dat" están organizados en grupos significativos de cinco elementos, los va leyendo y poniendo en el array s, desde donde los muestra en pantalla:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream entrada("in.dat"); // abre el flujo de entrada
char s[50];
try {
do {
for(int i=0; i<5; ++i) { // grupos de cinco
entrada.getline(s,50,'|'); // lee hasta el '|'
cout << s << 't';
}
cout << endl;
} while (!entrada.eof() ); // hasta la marca de fin de archivo
}
catch(ios_base::failure &e) { // por si las moscas
cout << "error de lectura" << endl;
throw;
}
cout << endl;
system("PAUSE"); // o getchar(); para hacer una pausa
entrada.close(); /*realmente no es necesario aquí, ya que de todos modos, el archivo se cerrará al salir de ámbito */
return 0; // realmente tampoco es necesario.
}
// ------------------
Nota: si tu compilador no puede con este código básico no es de C++
Alejandro
El programejo supone que los datos del archivo de entrada "in.dat" están organizados en grupos significativos de cinco elementos, los va leyendo y poniendo en el array s, desde donde los muestra en pantalla:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream entrada("in.dat"); // abre el flujo de entrada
char s[50];
try {
do {
for(int i=0; i<5; ++i) { // grupos de cinco
entrada.getline(s,50,'|'); // lee hasta el '|'
cout << s << 't';
}
cout << endl;
} while (!entrada.eof() ); // hasta la marca de fin de archivo
}
catch(ios_base::failure &e) { // por si las moscas
cout << "error de lectura" << endl;
throw;
}
cout << endl;
system("PAUSE"); // o getchar(); para hacer una pausa
entrada.close(); /*realmente no es necesario aquí, ya que de todos modos, el archivo se cerrará al salir de ámbito */
return 0; // realmente tampoco es necesario.
}
// ------------------
Nota: si tu compilador no puede con este código básico no es de C++
Alejandro
