Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: MeCraniDOS en 14 Junio 2013, 12:54 PM

Título: [?] Primeros 2 caracteres de un archivo
Publicado por: MeCraniDOS en 14 Junio 2013, 12:54 PM
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


Título: Re: [?] Primeros 2 caracteres de un archivo
Publicado por: amchacon en 14 Junio 2013, 14:13 PM
Abres el archivo y escribes los 2 caracteres. Acto seguido cierras el archivo.
Título: Re: [?] Primeros 2 caracteres de un archivo
Publicado por: daryo en 14 Junio 2013, 14:27 PM
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
Título: Re: [?] Primeros 2 caracteres de un archivo
Publicado por: MeCraniDOS en 14 Junio 2013, 14:57 PM
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++
Título: Re: [?] Primeros 2 caracteres de un archivo
Publicado por: daryo en 14 Junio 2013, 15:19 PM
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();

}
Título: Re: [?] Primeros 2 caracteres de un archivo
Publicado por: 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  ;-)
Título: Re: [?] Primeros 2 caracteres de un archivo
Publicado por: daryo en 14 Junio 2013, 16:23 PM
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  :-\
Título: Re: [?] Primeros 2 caracteres de un archivo
Publicado por: MeCraniDOS en 14 Junio 2013, 17:10 PM
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...  :¬¬ :¬¬
Título: Re: [?] Primeros 2 caracteres de un archivo
Publicado por: daryo en 14 Junio 2013, 17:25 PM
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
Título: Re: [?] Primeros 2 caracteres de un archivo
Publicado por: daryo en 15 Junio 2013, 16:11 PM
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

}

Título: Re: [?] Primeros 2 caracteres de un archivo
Publicado por: MeCraniDOS en 15 Junio 2013, 19:24 PM
Vale vale gracias, lo probare y te digo  ;-) ;-)

Ahora funciona perfecto  :silbar: