[C con Clase] Duda Para eliminar linea duplicadas

Programante programante en gmail.com
Mar Ago 26 20:40:58 CEST 2008


Eliseo Alcantar escribió:
>
> Hola lista:
>
>  
>
> Tengo un pequeño programita en C que lee linea por linea de un archivo 
> .txt, pero no se como crear una funcion
>
> que elimine las lineas duplicadas (ello después de haber pasado varios 
> filtros).
>
>  
>
> Estoy aprendiendo y me gustaria me dijeran como puedo crear la funcion 
> en C, o si tengo que echar mano de arreglos de cadenas, etc.
>
>  
>
> El abrir y guardar archivos ya esta solucionado, pero necesito primero 
> desduplicar las lineas.
>
>  
>
> Gracias.
>

No hay una función en C. Tienes que hacerlo tú mismo con las cadenas. 
Aquí tienes un ejemplo de programa que elimina las líneas duplicadas, 
como el programa uniq de UNIX.

int main() {
    int i=0;
    char Buffer[2][2048];
    Buffer[1][0] = '\0';
    while (fgets(Buffer[i], sizeof(Buffer[0]), stdin)) {
          if (strcmp(Buffer[0], Buffer[1])) //Si es distinta de la linea 
anterior
             fputs(Buffer[i], stdout); //la imprimimos

          i=!i; //Cambiamos los papeles de linea actual/anterior
    }
    return 0;
}





Más información sobre la lista de distribución Cconclase