Banda Ancha EU

Comunidad de usuarios
de fibra, móvil y ADSL

hosting en interdominios
322 lecturas y 3 respuestas
  • Boca de Pez Boca de Pez
    6

    strcmp en C

    Buenas, tengo que hacer un simple ejercicio para mi centro de estudios en que la función sea hacer un programa que ejecutándolo en la carpeta deseada, te escriba en un txt un listado de todo el contenido de esa carpeta. El problema que tengo es que me lo lista todo incluyendo el ".", ".." y también dos strings "temp.txt" y "listado.exe" que son parte del programa. Estoy intentando hacer que me borre esas 4 líneas pero no lo acabo de conseguir, mi objetivo era el crear un FILE "temp.txt" en donde me lo escribe todo, incluyendo esas líneas que no quiero, entonces luego voy leyendo línea por línea del FILE "temp.txt" y lo voy asignado a una string y luego lo comparo con unas strings que he declarado asignándoles los carácteres que no deseo que salgan.

    Bueno me imagino que es difícil de imaginar así que mejor pongo el código...

    int main () {

    FILE *puntero,*punterodefinitivo; //puntero será el "temp.txt" y el definitivo sería el resultado.
    DIR *directorio;
    struct dirent *contenido;
    char string[120];
    char s1[]=".."; // Empiezo declarando las strings con los carácteres que no quiero que salgan"
    char s2[]=".";
    char s3[]="listado.exe"; /* es el nombre del ejecutable cuando lo compilo, como lo ejecuto en la misma carpeta también me lo copia en el listado */
    char s4[]="temp.txt"; // El archivo "temporal"

    contenido=readdir(directorio);
    while(contenido!=NULL) {
    fprintf(puntero,"%s \n",contenido -> d_name);

    contenido=readdir(directorio);
    }
    closedir(directorio);
    fclose(puntero);
    puntero=fopen("temp.txt","r");
    punterodefinitivo=fopen("listado.txt","w");
    while (!feof(puntero)){
    fgets(string,120,puntero);
    if ((strcmp (string,s1) != 0) && (strcmp (string,s2) != 0) && (strcmp (string,s3) != 0) && (strcmp (string,s4) != 0) ) {
    fprintf(punterodefinitivo,"\n%s",string); // ***
    }

    }

    }

    *** No sé si he expresado bien tanto el if como el strcmp, había pensado en comprar "string" con s1,s2,s3 y s4 y si no devuelve 0 ( 0 creo que era cuando la comparación es igual ), pues que escriba en el punterodefinitivo, pero no me funciona, me escribe todo de nuevo.

    Y ese es mi tocho de código, soy novato así que me imagino que lo que intento hacer se puede resumir en muchas líneas, así que también me gustaría recibir consejos.

    Gracias!!

    Este tema lleva más de 6 meses inactivo. Es recomendable que abras un nuevo tema para retomar la conversación.