Programme simple qui affiche la taille, l'espace utilise et l'espace libre d'un disque dur . Application de GetDiskFreeSpace et de la biblio windows.h
version allegee du prog de zorque
http://www.cppfrance.com/article.aspx?ID=361
le calcul de espace_libre et espace_total sont equivalent sauf que le 2eme evite un depassement de capacite (gros disque) pour la variable de type UNSIGNED LONG (0 à 4.294.967.295 c'est bien mais pas assez) ce qui evite d'afficher de faux resultat !
si vous connaisser un type de variable offrant + de place je suis preneur !!
Source / Exemple :
/******************************************************************************/
/* FREEDISKSPACE */
/******************************************************************************/
/* Auteur: Ironnyc / Email: Ironnyc@hotmail.com */
/* Description / Recupere les infos sur la taille d'un disque dur */
/* / Capacite du disque dur ,espace libre etc... */
/* ATTENTION / pour de gros disque : dans le calcul de espace_total la */
/* / taille total des cluster multiplier par les secteurs et */
/* / encore multiplier par les bytes par secteur donne un */
/* / resultat depassant la capacite de stockage d'un */
/* / UNSIGNED LONG bref le calcul reste identique a celui de */
/* / espace_libre */
/******************************************************************************/
#include <stdio.h> /* bibliotheque d'entree sortie (printf...)*/
#include <windows.h> /* GetDiskFreeSpace */
void main()
{
/* Declaration des variables */
char lecteur[5] = "c:\\"; /* lettre du lecteur a scanner */
unsigned long Secteurs_Par_Cluster, Bytes_Par_Secteurs, Cluster_libre, Total_Cluster; /* stockage des infos */
unsigned long espace_libre, espace_utilise, espace_total; /* permettra de traiter les infos */
GetDiskFreeSpace(lecteur,&Secteurs_Par_Cluster,&Bytes_Par_Secteurs,&Cluster_libre,&Total_Cluster);
espace_libre = ((Cluster_libre * Secteurs_Par_Cluster * Bytes_Par_Secteurs)/1024)/1024;
espace_total = (((Total_Cluster * Secteurs_Par_Cluster)/1024)*Bytes_Par_Secteurs)/1024;
espace_utilise = espace_total - espace_libre;
/* Affichage des resultats */
printf("lecteur= %c:\\\n",lecteur[0]);
printf("Secteur par cluster= %ld\n",Secteurs_Par_Cluster);
printf("Bytes par secteurs= %ld\n",Bytes_Par_Secteurs);
printf("Cluster libres= %ld\n",Cluster_libre);
printf("Nombre total de cluster= %ld\n",Total_Cluster);
printf("\nCapacite du lecteur : %ld Mo",espace_total);
printf("\nEspace utiliser : %ld Mo",espace_utilise);
printf("\nEspace libre : %ld Mo\n",espace_libre);
/* Pause */
puts("Pour continuer pressez une touche...");
getchar();
}
Conclusion :
Bonne prog !!