2010-11-21 8 views
1

Je suis très novice en programmation C. Je suis coincé dans un problème très trivial. J'ai un programme C où je passe la valeur d'une variable à travers un fichier texte. Basé sur cette variable je passe une condition, par ex. if bDrw==true then proceed else not. Maintenant, je veux que mon programme prenne la condition à partir de la ligne de commande au lieu d'un fichier texte. c'est-à-dire quand je tape "Drw" sur la ligne de commande, le programme devrait faire bDrw==true.Argument de ligne de commande en C

Comment est-ce que je peux faire ceci? Je donne le reste de arguents par:

int main(int argc, char *argv[]) 
{ 
bool bArgs = false; 
bool bConf = false; 
bool bUgMgr = false; 
bool bFile = false; 
bool bErp = false; 

char acAttrFile[(MAX_FSPEC_SIZE*2) + 1 ]=""; 
char acPartFile[(MAX_FSPEC_SIZE*2) + 1 ]=""; 
char acConfFile[(MAX_FSPEC_SIZE*2) + 1 ]=""; 
char acSingleItem[UF_UGMGR_PARTNO_SIZE + 1]=""; 
char acItemRevSeed[UF_UGMGR_PARTNO_SIZE + UF_UGMGR_PARTREV_SIZE + 1]=""; 
char acUser[MAX_FSPEC_SIZE + 1]=""; 
char acPass[MAX_FSPEC_SIZE + 1]=""; 
char acLogDir[(MAX_FSPEC_SIZE*2) + 1]=""; 
char acNatDir[(MAX_FSPEC_SIZE*2) + 1]=""; 
char msg[MAX_LINE_SIZE + 1]=""; 

bArgs = getArgs(argc,argv,acAttrFile,acPartFile,acConfFile,acSingleItem,acItemRevSeed,acUser,acPass,acLogDir,acNatDir,&bUgMgr,&bErp); 
+2

Avez-vous essayé le tirant de 'argv' encore? –

+3

À quoi ressemble votre code actuel? A quoi ressemble votre fonction 'main'? –

Répondre

1

En supposant c99:

#include <string.h> 
int main(int argc, void **argv) 
{ 
    bool bDrw = false; 
    if (argc > 1 && strcmp(argv[1], "bDrw") == 0) 
     bDrw = true; 
    /* take it from here.... */ 
    return 0; 
} 
+4

Ne devriez-vous pas inclure 'stdbool.h'? –

1

Essayez ceci, en supposant que l'exécution du programme en tapant son nom suivi de Drw:

int main(int argc, char *argv[]) 
{ 
... 
    if(argc > 1 && strncmp("Drw",argv[1],4) == 0) 
    { 
    ... // bDrw is true 
    } 
... 
} 
0
+0

En fait, je suis Pasing tous les arguements par ici: getArgs (argc, argv, acAttrFile, acPartFile, acConfFile, acSingleItem, acItemRevSeed, acUser, acPass, acLogDir, acNatDir, & bUgMgr, &bErp); – Shekhar

+0

OK, vous avez juste besoin de faire ce que d'autres suggéré, selon la façon dont vous voulez le faire - soit mettre le code dans main et passer une nouvelle variable 'bDrw' comme vous passez, par exemple' acAttrFile' ou faites le 'if (bDrw)' cocher là et déterminer si continuer ou pas. –

0

Pour l'analyse de l'argument complexe, vous devriez considérer la bibliothèque getopt.

Cependant, dans ce cas:

#include <stdio.h> 
#include <string.h> 

int main(int argc, char** argv) { 
    unsigned short int bDrw = 0; 

    if (argc == 2 && strcmp(argv[1], "Drw") == 0) { 
     bDrw = 1; 
    } 

    printf("bDrw = %d\n", bDrw); 

    return 0; 
} 
Questions connexes