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
Gracias de antemano. Un saludo.
#include <iostream> #include <fstream> #include <stdlib.h> using namespace std; int main (int argc, char **argv) { const int TAM_BUFFER = 512; char buffer [TAM_BUFFER]; ifstream fi; ofstream fo; if (argc != 3) { cerr << "Error: Numero de argumentos incorrecto\n"; cerr << "Formato: " << argv[0]<< " <fich_in> <fich_out>\n"; exit (1); } fi.open (argv[1]); if (!fi) { cerr << "Error: no pudo abrirse " << argv[1] << endl; exit (2); } fo.open(argv[2], ofstream::binary); if (fo.fail()) { cerr << "Error: No pudo crearse " << argv[2] << endl; exit (2); } while (fi.read(reinterpret_cast<char*>(buffer), TAM_BUFFER)) fo.write(buffer, TAM_BUFFER); fo.write(buffer, fi.gcount()); fi.close (); fo.close (); return (0); }