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
Abres el archivo y escribes los 2 caracteres. Acto seguido cierras el archivo.
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
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++
#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();
}
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 ;-)
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 :-\
Vale vale, pues mirare a ver que puede fallar, el codigo que tengo es este
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... :¬¬ :¬¬
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
pues mira ya que lo que quieres es hacerlo con un ejecutable ( no hace falta que lo dijeras por pv :P):
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
}
Vale vale gracias, lo probare y te digo ;-) ;-)
Ahora funciona perfecto :silbar: