• Sábado 4 de Mayo de 2024, 22:48

Autor Tema:  lectura de ficheros sin formato  (Leído 1489 veces)

meana

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
lectura de ficheros sin formato
« en: Lunes 27 de Abril de 2009, 21:13 »
0
Código: C++
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4.  
  5. using namespace std;
  6.  
  7.  
  8. void EscribirFichCONFormato (const char *nombre);
  9. void EscribirFichSINFormato (const char *nombre);
  10. void LeerFichCONFormato (const char *nombre);
  11. void LeerFichSINFormato (const char *nombre);
  12.  
  13.  
  14. //implementacion de las funciones
  15. void EscribirFichCONFormato (const char *nombre){
  16.     int n;
  17.     ofstream f (nombre);
  18.     while (cin>>n){
  19.           f<<n;
  20.     }
  21.     f.close();
  22. }
  23. void EscribirFichSINFormato (const char *nombre){
  24.     int n;
  25.     ofstream f (nombre, ios::binary);
  26.     cin>>n;
  27.     while(cin>>n){
  28.         f.write(reinterpret_cast<const char *>(&nombre),sizeof(nombre));
  29.     }
  30.     f.close();
  31. }
  32. void LeerFichCONFormato (const char *nombre){
  33.     ifstream f (nombre);
  34.     int n;
  35.     while(f>>n){
  36.         cout << n;
  37.         f>>n;
  38.     }
  39.     f.close();
  40. }
  41. void LeerFichSINFormato (const char *nombre){
  42.     int n;
  43.     fstream f(nombre, ios::in | ios::binary);
  44.     f.read(reinterpret_cast<char*>(&n),sizeof(n));
  45.     while (!f.eof()){
  46.         cout << n;
  47.         f.read(reinterpret_cast<char*>(&n),sizeof(n));
  48.     }
  49.     f.close();
  50. }
  51. int main () {
  52.    
  53.     cout << endl << "Introduce numeros para rellenar el fichero CON formato (Ctrl+Z para acabar): ";
  54.     EscribirFichCONFormato("num01.txt");
  55.    
  56.     cout << endl << "El fichero CON formato contiene los siguientes enteros" << endl;
  57.     LeerFichCONFormato("num01.txt");
  58.    
  59.  
  60.     cin.clear();
  61.  
  62.    
  63.     cout << endl << "Introduce numeros para rellenar el fichero SIN formato (Ctrl+Z para acabar): ";
  64.     EscribirFichSINFormato("num01.dat");
  65.    
  66.     cout << endl << "El fichero SIN formato contiene los siguientes enteros" << endl;
  67.     LeerFichSINFormato("num01.dat");    
  68.    
  69.     system("PAUSE");
  70.     return 0;
  71. }
  72.  
  73.  
este es el codigo de un rograma que estamos haciendo en clase para empezar a trabajar con ficheros, el codigo compila perfectamente pero la lectura de ficheros sin formato no hace lo que deberia, simlemente me muestra una serie de numeros sin sentido, no se de que se puede tratar pese a que llebo varias horas intentando arreglarlo...
Gracais

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: lectura de ficheros sin formato
« Respuesta #1 en: Martes 28 de Abril de 2009, 09:34 »
0
No sé a qué te refieres con ficheros sin formato.

meana

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: lectura de ficheros sin formato
« Respuesta #2 en: Martes 28 de Abril de 2009, 14:10 »
0
Cita de: "m0skit0"
No sé a qué te refieres con ficheros sin formato.
sin formato significa, que si abres el fichero con el note pad, no te muestra nada de lo que tu escribiste, si no una serie de caracteres que si no me equivoco van con el codigo asci pero no estoy seguro, sin embargo si tubiese formato, al abrir el note pad verias claramente lo que escribes, ademas si te fijas en la implementacion cambia bastante....

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: lectura de ficheros sin formato
« Respuesta #3 en: Martes 28 de Abril de 2009, 14:28 »
0
Bueno, eso se llama fichero de texto (por eso "se ve en el bloc de notas") y fichero binario (de ahí ios::binary). Todos los ficheros tienen formato porque si no serían datos aleatorios.

Cita de: "meana"
la lectura de ficheros sin formato no hace lo que deberia, simlemente me muestra una serie de numeros sin sentido
Cita de: "meana"
f.write(reinterpret_cast<const char *>(&nombre),sizeof(nombre));
Es lo que tú has escrito en el fichero: punteros a punteros. char * nombre es un puntero, así que &nombre es la dirección de memoria del puntero.

meana

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
Re: lectura de ficheros sin formato
« Respuesta #4 en: Martes 28 de Abril de 2009, 19:33 »
0
es k como en klse los llamamos de las dos maneras jaja es mas hasta en los apuntes los llama como yo digo jaja