[?] Primeros 2 caracteres de un archivo

Iniciado por MeCraniDOS, 14 Junio 2013, 12:54 PM

0 Miembros y 3 Visitantes están viendo este tema.

MeCraniDOS

Hola chicos, quería saber como puedo modificar los dos primeros caracteres de un archivo, es decir, tengo un archivo que se llama Hola.txt y en el que pone:

Hola.txt
CitarHolaquetal

Y quiero copiar ese archivo modificando las dos primeras letras, para que quede por ejemplo así:

Adios.txt
CitarRilaquetal

Es decir, solo quiero que cambie las dos primeras letras del archivo original...

Espero que puedan ayudarme  :-\

Saludos


"La física es el sistema operativo del Universo"
     -- Steven R Garman

amchacon

Abres el archivo y escribes los 2 caracteres. Acto seguido cierras el archivo.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

daryo

y llevas algo de codigo si es asi ponlo?
en c++ o c?

si no lee sobre la manipulacion de ficheros , yo prefiero por mucho c++ en el manejo de ficheros pero son gustos
buenas

MeCraniDOS

Cita de: amchacon en 14 Junio 2013, 14:13 PM
Abres el archivo y escribes los 2 caracteres. Acto seguido cierras el archivo.

¬¬' (Conectate a Skype cuando puedas  :¬¬)

Cita de: daryo en 14 Junio 2013, 14:27 PM
en c++ o c?

En C++
"La física es el sistema operativo del Universo"
     -- Steven R Garman

daryo

#4
Código (c++) [Seleccionar]
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
char *buf;
int tamano;
string cadena;
ifstream abrir("hola.txt"); // archivo a leer
ofstream escribir("copia.txt"); // archivo a escribir

//-----------------------------
abrir.seekg(0,ios::end); // nos ponemos al final del archivo
tamano=abrir.tellg();  //encuentro el tamano del archivo
abrir.seekg(0,ios::beg); // ahora nos devolvemos al inicio
buf=new char[tamano];  // le damos el tamaño a bof del archivo
//-----------------------------
abrir.read(buf,tamano); // guardamos el archivo en buf
abrir.close();
buf[0]='r'; // primer caracter cambiado
buf[1]='i';
escribir << buf; // escribimos el contenido de buf
escribir.close();

}
buenas

MeCraniDOS

Gracias por el código, pero solo me escribe la 'r' y la 'i', es decir, abre el archivo y al escribirlo en el nuevo archivo solo me pone: "ri "  :-\ :-\

Otra cosa, el "string cadena" para que lo usas??

Saludos  ;-)
"La física es el sistema operativo del Universo"
     -- Steven R Garman

daryo

Cita de: MeCraniDOS en 14 Junio 2013, 16:07 PM
Gracias por el código, pero solo me escribe la 'r' y la 'i', es decir, abre el archivo y al escribirlo en el nuevo archivo solo me pone: "ri "  :-\ :-\

Otra cosa, el "string cadena" para que lo usas??

Saludos  ;-)


si la string sobra pero a mi me copia perfecto lo que hay en hola.txt  :-\
buenas

MeCraniDOS

Vale vale, pues mirare a ver que puede fallar, el codigo que tengo es este

Código (cpp) [Seleccionar]


void Cambiar()
{

        char *buf;

        ifstream fichero_original; //Declaramos una variable para el fichero original
ofstream fichero_final; //Declaramos una variable para el archivo que crearemos


fichero_original.open("hola.txt", ios::binary); //Abrimos el archivo original en binario
noskipws(fichero_original); //Leemos el archivo incluidos los espacios

fichero_final.open("adios.txt", ofstream::binary); //Abrimos el archivo que estamos creando

// Obtengamos tamaño fichero

fichero_original.seekg(0,ios::end);
unsigned long Tamanyo = fichero_original.tellg();
fichero_original.seekg(0,ios::beg);
buf = new char[Tamanyo];


        fichero_original.read(buf,Tamanyo); // Guardamos el archivo en buf
fichero_original.close(); //Cerramos el fichero original

        buf[0]='R'; // primer caracter cambiado
        buf[1]='I'; // segundo caracter cambiado

        fichero_final << buf; // Escribimos el contenido de buf
        fichero_final.close(); //Cerramos el nuevo fichero

}


Le he quitado cosas a la función y eso, y el archivo al que le intento cambiar las dos primeras letras es un archivo que pesa 2 Mb...  :¬¬ :¬¬
"La física es el sistema operativo del Universo"
     -- Steven R Garman

daryo

tu programa me funciona perfecto , que es exactamente lo que falla?

crea un hola.txt con una cadena al azar y adios.txt borralo para que el mismo programa lo cree
buenas

daryo

#9
pues mira ya que lo que quieres es hacerlo con un ejecutable ( no hace falta que lo dijeras por pv :P):

Código (c++) [Seleccionar]

void Cambiar()
{

char *buf;
char caracter;
ifstream fichero_original("notepad.exe", ios::binary); //Declaramos una variable para el fichero original
fichero_original.seekg(0,ios::end);
unsigned long Tamanyo = fichero_original.tellg();
fichero_original.seekg(0,ios::beg);
buf = new char[Tamanyo];


fichero_original.read(buf,Tamanyo); // Guardamos el archivo en buf
fichero_original.close(); //Cerramos el fichero original
ofstream fichero_final("adios.exe", ios::binary); //Abrimos el archivo que estamos creando

       buf[0]='R'; // primer caracter cambiado
       buf[1]='I'; // segundo caracter cambiado
fichero_final.write(buf,Tamanyo);

       fichero_final.close(); //Cerramos el nuevo fichero

}

buenas