Аргумент командной строки в C - PullRequest
1 голос
/ 21 ноября 2010

Я очень новичок в программировании на C. Я застрял в очень тривиальной проблеме. У меня есть программа на C, где я передаю значение одной переменной через текстовый файл. На основании этой переменной я прохожу одно условие, например, if bDrw==true then proceed else not. Теперь я хочу, чтобы моя программа взяла условие из командной строки вместо текстового файла. т.е. когда я набираю «Drw» в командной строке, программа должна сделать bDrw==true.

Как я могу это сделать? Я даю остальную часть аргументов через:

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

Ответы [ 4 ]

1 голос
/ 21 ноября 2010

Попробуйте, если вы запустите программу, введя ее имя, а затем Drw:

int main(int argc, char *argv[])
{
...
  if(argc > 1 && strncmp("Drw",argv[1],4) == 0)
  {
     ...  // bDrw is true
  }
...
}
1 голос
/ 21 ноября 2010

Предполагая 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;
}
0 голосов
/ 21 ноября 2010

При сложном разборе аргументов следует учитывать библиотеку getopt.

Однако в этом случае:

#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;
}
0 голосов
/ 21 ноября 2010

Взгляните на этот урок:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...