[C] Récuperer le nom d'un fichier zip

Récuperer le nom d'un fichier zip [C] - C - Programmation

Marsh Posté le 28-03-2010 à 21:09:49    

Salut,
Je suis un bon noob de C, et je veux faire une fonction qui me retourne le nom et la taille d'un fichier zip que je connais pas son nom et qui est contenu dans le répertoire du code.
Donc,

  • Avoir la liste des fichiers dans le répertoire "."
  • Filtrer la liste pour avoir le fichier zip (filtrage par extention) et il n'y a qu'un seul fichier zip ;)
  • Mettre dans deux variables le nom et la taille du fichier zip.

Un grand merci pour celui qui me donne le code pour faire tout cela et je le citerai dans l'application ;)
Merci d'avance,
Wassgha

Reply

Marsh Posté le 28-03-2010 à 21:09:49   

Reply

Marsh Posté le 28-03-2010 à 21:47:12    

t'es obligé de le faire en C? J'ai dans l'idée que ce serait plus facile en shell.

Reply

Marsh Posté le 28-03-2010 à 21:58:22    

Oué obligé car c'est pour PSP :/

Reply

Marsh Posté le 28-03-2010 à 22:11:49    

Salut, je sais pas ce que tu as de dispo niveau header (si c'est standard) sur psp, mais voici un exemple de comment tu peux faire ça en C:
 

Code :
  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <dirent.h>
  4. #include <string.h>
  5. #include <sys/stat.h>
  6. #include <stdint.h>
  7. int main(void)
  8. {
  9.     DIR *dp;
  10.     struct dirent *ep;
  11.     char* zip = NULL;
  12.     /* open the current directory and search for the zip file */
  13.     dp = opendir("./" );
  14.     if (dp != NULL)
  15.     {
  16.         /* for each directory entry, check if the file ends with '.zip' */
  17.         const char* str = NULL;
  18.         while (ep = readdir(dp))
  19.             if ((str = strstr(ep->d_name, ".zip" )) && strlen(str) == strlen(".zip" )) {
  20.                 zip = ep->d_name;
  21.             }
  22.         closedir(dp);
  23.     }
  24.     else {
  25.         perror("Couldn't open the directory\n" );
  26.         return 1;
  27.     }
  28.    
  29.     /* if we didn't find it, exit */
  30.     if (!zip) {
  31.         perror("The zip file wasn't found!\n" );
  32.         return 1;
  33.     }
  34.    
  35.     /* try to stat the file to get the file information */
  36.     struct stat file_status;
  37.     if (stat(zip, &file_status)) {
  38.         fprintf(stderr, "could not stat the file %s", zip);
  39.         return 1;
  40.     } else
  41.         printf("Zip file: %s\n    size: %9jd Kb\n", zip, ((intmax_t)file_status.st_size) / 1024);
  42.    
  43.     return 0;
  44. }


 

$ gcc -o t t.c && ./t
Zip file: desserts.pages.zip
    size:      5634 Kb


 
Tout est dans l'utilisation de DIR, dirent et stat, pour plus d'infos voir les manpage associées
J'espère que ça te conviendra :jap:  


---------------
Always wear a camera!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed