domingo, 6 de junio de 2010

Elimina de un archivo todas las apariciones de un fragmento de texto

Lo mejor de saber programar es que cuando necesitas un programa muy concreto te lo puedes hacer tu, y este seguramente lo hayamos necesitado alguna vez.

Al programa le pasas 2 parámetros, el primero el nombre del archivo de texto (txt, html... cualquiera que se pueda abrir con el notepad), y el segundo es el texto o palabra que quieres quitar (si lleva espacios ponlo entre comillas).

#include <iostream>
#include <fstream>
using namespace std;

int main(int argc, char* argv[])
{
    if (argc < 3)
    {
        cout << "QuitaPalabras.exe filename text" << endl;
        return 1;
    }
    int wsize = strlen(argv[2]);

    ifstream in(argv[1],ios::binary);

    in.seekg(0,ios::end);
    long size = in.tellg();
    in.seekg(0,ios::beg);
    size -= long(in.tellg());

    char * buffer = new char [size];

    in.read(buffer,size);
    in.close();

    int i=0,j=0;
    while (i<size)
    {
        int k = 0;
        while (k<wsize && buffer[i+k] == argv[2][k]) k++;
        if (k<wsize)
            buffer[j++] = buffer[i++];
        else
            i+=wsize;
    }

    ofstream out(argv[1],ios::binary);
    out.write(buffer,j);
    out.close();

    return 0;
}

Comparte o puntua esta publicación ▼

0 comentarios:

Publicar un comentario