Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Passage d'une lettre en paramètre [ Divers / Débutant(e) ] (ipeteivince)

lundi 19 juin 2006 à 16:53:32 | Passage d'une lettre en paramètre

ipeteivince

Membre Club
Salut

Voila, je veux ecrire un soft qui me donne la taille d'un lecteur (disque)
Je veux pourvoir l'apeller de la facon suivante:
disquespace c //renvoie la taille du disque c:

Voici le code, je ne comprend pas pourquoi le caractère entré n'est pas celui que j'ai tapé !

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main(char lect)
{
/* Declaration des variables */
/* char lecteur[5] = "c:\\"; lettre du lecteur a scanner */

char lecteur[5]= " :\\";
lecteur[0] = lect;

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);


}

Soyez indulgents, je débute en C, merci


lundi 19 juin 2006 à 17:01:55 | Re : Passage d'une lettre en paramètre

vecchio56

Administrateur CodeS-SourceS
Tu ne peux passer un paramètre char comme ca, il faut le faire de manière standard:
int main(int argc, char* argv[])
argc = nombre de paramètres
argv = les paramètres.
-Tu vérifies avec argc qu'un paramètre a bien été passé
-*argv[1] contient la première lettre du premier paramètre

_____________________________________
Un éditeur de ressources gratuit pour Windows


lundi 19 juin 2006 à 17:03:39 | Re : Passage d'une lettre en paramètre

luhtor

Tu peux pas écrire ce que tu as fait. La fonction main prend des arguments tres précis.

int main(int argc, char * argv[])
{
char lect;

if (argc != 2) return 1; // argument incorrect
else lect = argv[1][0];

/* Declaration des variables */
/* char lecteur[5] = "c:\\"; lettre du lecteur a scanner */

char lecteur[5]= " :\\";
lecteur[0] = lect;

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);


}

J'ai pas testé, mais ca doit marcher. Le premier arguement argv[0] correspond au nom de l'éxécutable, les paramètres rentrés par l'utilisateur commence a partir de argv[1].

lundi 19 juin 2006 à 17:06:03 | Re : Passage d'une lettre en paramètre

BruNews

Administrateur CodeS-SourceS
GetDiskFreeSpace() est à bannir depuis Win95-SE et la prise en charge des grands disque.
Employer GetDiskFreeSpaceEx() pour résultats corrects.

ciao...
BruNews, MVP VC++



Cette discussion est classé dans : espace, lecteur, libre, cluster, secteurs


Répondre à ce message

Sujets en rapport avec ce message

COMMENT TROUVER LECTEUR LIBRE EN VC++? [ par 25230 ] Bonjour,l'un d'entre vous sait-il comment récupérer en VC++ la lettre du premier lecteur disponible sur un PC ?Merci pour vos réponses,Thierry Espace libre d'un DD à distance [ par Elfus ] Bonjour à tous :) J'aimerai pouvoir connaître l'espace disponible sur un disque dur à distance. L'équivalent d'un GetDiskFreeSpace mais pas en local espace disque libre [ par mat74 ] salut a ts je cherche un moy de determiner l'espace libre sur une de mes partition et je sais vraiment pas comment faire car la seule fonction pr cela Test chaine Vide [ par ryseryse ] bonjour, voilaj'ai un petit souci je pense pas que ce soit compliquéje veux juste tester une chaine nulle.MAIS je suis completement BLOQUEje n'arrive Changez Attribut (Chmod) d'un fichier sous Windows [ par mike0419 ] bonjour , je cherche comment changez l'attribut (chmod)lecteur Seule d'un fichier pour le mettre en ecriture (enlevé le lecteur seule koi lol)voila me namespace ou espace de nom [ par mat74 ] salut a ts je cherche comment definir et utiliser les namespace .merci d'avance @+ Aide AVANT LUNDI pliz [ par Gipsy974 ] bnojour ami programmeur j ai un projet a rendre mais me vopila confronter a un choix c est a propos des operateurs >>j ai fait deux codesle contenu im Timer en espace noyau , comment faire ? [ par ragedragon ] Salut à tous, je cherche un moyen de pouvoir réaliser un timer dans un driver sous linux en C bien sur. Aucun souci en espace utilisateur mais au sein Nom de Lecteur de disque [ par gagah1 ] Salut!Quelle fonction (en win32) dois-je appeller pour avoir le nom des disques ou des lecteurs.Exemple : BOOT[C:] , BACKUP[D:], RECOVER[E:], LecteurD problème espace mémoire [ par borgeomi ] borgeomibonjouuuuuuur !!!!!encore une question stupide d'un programmeur cobol MVSsous VISUAL C ++ 6J'ai crée une classe Personne du stylePersonne Tab


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


HTC Magic

Entre 429€ et 429€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.