elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: [SOLUCIONADO] Ficheros binarios en: 1 Junio 2013, 18:16 pm
Ya está solucionado


Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <stdlib.h>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. int main (int argc, char **argv)
  9. {
  10. const int TAM_BUFFER = 128;
  11. int buffer [TAM_BUFFER];  
  12. int entero, cont=0;
  13.  
  14.  
  15. ifstream fi;
  16. ofstream fo;
  17.  
  18.  
  19. if (argc != 3) {
  20. cerr << "Error: Numero de argumentos incorrecto\n";
  21. cerr << "Formato: " << argv[0]<< " <fich_in> <fich_out>\n";
  22. exit (1);
  23. }
  24.  
  25. fi.open (argv[1]);
  26.  
  27. if (!fi) {
  28. cerr << "Error: no pudo abrirse " << argv[1] << endl;
  29. exit (2);
  30. }
  31.  
  32. fo.open(argv[2], ofstream::binary);
  33.  
  34. if (fo.fail())
  35. {
  36. cerr << "Error: No pudo crearse " << argv[2] << endl;
  37. exit (2);
  38. }
  39.  
  40.  
  41. fi >> entero;
  42.  
  43. while (!fi.eof())
  44. {
  45. if(cont==TAM_BUFFER){
  46. for(int i=0; i<TAM_BUFFER; i++)
  47. fo.write ((const char *) (&buffer[i]), sizeof (int));
  48. }
  49. buffer[cont] = entero;
  50. cont++;
  51.  
  52. fi >> entero;
  53.  
  54. }
  55.  
  56. for(int i=0; i<cont; i++)
  57. fo.write ((const char *) (&buffer[i]), sizeof (int));
  58.  
  59.  
  60. fi.close ();
  61. fo.close ();
  62.  
  63. return (0);
  64. }
2  Programación / Programación C/C++ / [SOLUCIONADO] Ficheros binarios en: 1 Junio 2013, 12:35 pm
Hola a todos,

Necesito ayuda con un problemita y es que estoy empezando con la lectura y escritura de ficheros binarios en C++.

Teniendo un archivo de texto con un número indeterminado de enteros separados cada uno por espacios, tabuladores o saltos de línea quiero leerlos y escribirlos en un fichero binario. He creado un programa para leer y escribir de uno en uno pero ahora me piden escribir en el fichero de salida en bloques de 512 bytes. Para ello utilizo un buffer con un tamaño de 512 usando la funcion write() para leer y la funcion read() para escribir pero el fichero de salida no está en formato binario.

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <stdlib.h>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. int main (int argc, char **argv)
  9. {
  10. const int TAM_BUFFER = 512;
  11. char buffer [TAM_BUFFER];  
  12.  
  13.  
  14. ifstream fi;
  15. ofstream fo;
  16.  
  17.  
  18. if (argc != 3) {
  19. cerr << "Error: Numero de argumentos incorrecto\n";
  20. cerr << "Formato: " << argv[0]<< " <fich_in> <fich_out>\n";
  21. exit (1);
  22. }
  23.  
  24. fi.open (argv[1]);
  25.  
  26. if (!fi) {
  27. cerr << "Error: no pudo abrirse " << argv[1] << endl;
  28. exit (2);
  29. }
  30.  
  31. fo.open(argv[2], ofstream::binary);
  32.  
  33. if (fo.fail())
  34. {
  35. cerr << "Error: No pudo crearse " << argv[2] << endl;
  36. exit (2);
  37. }
  38.  
  39.  
  40. while (fi.read(reinterpret_cast<char*>(buffer), TAM_BUFFER))
  41. fo.write(buffer, TAM_BUFFER);
  42.  
  43. fo.write(buffer, fi.gcount());
  44.  
  45.  
  46. fi.close ();
  47. fo.close ();
  48.  
  49. return (0);
  50. }
  51.  
Gracias de antemano. Un saludo.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines