Как получить значение от optarg

Привет я пишу простую программу клиент-сервер. В этой программе я должен использовать getopt() получить номер порта и IP-адрес как это:

сервер-i 127.0.0.1-p 10001

Я не знаю, как я могу получить значения от optarg, для использования позже в программе.

7
задан egrunin 20 November 2013 в 22:39
поделиться

2 ответа

Как насчет такого:

char buf[BUFSIZE+1];
snprintf(buf,BUFSIZE,"%s",optarg);

Или в более полном примере:

#include <stdio.h>
#include <unistd.h>

#define BUFSIZE 16

int main( int argc, char **argv )
{
    char c;
    char port[BUFSIZE+1];
    char addr[BUFSIZE+1];

    while(( c = getopt( argc, argv, "i:p:" )) != -1 )
        switch ( c )
        {
            case 'i':
                snprintf( addr, BUFSIZE, "%s", optarg );
                break;
            case 'p':
                snprintf( port, BUFSIZE, "%s", optarg );
                break;
            case '?':
                fprintf( stderr, "Unrecognized option!\n" );
                break;
        }

    return 0;
}

Для получения более подробной информации смотрите документацию Getopt.

.
4
ответ дан 6 December 2019 в 07:50
поделиться

Вы используете цикл while, чтобы пройтись по всем аргументам и обработать их так ...

#include <unistd.h>

int main(int argc, char *argv[])
{
    int option = -1;
    char *addr, *port;

    while ((option = getopt (argc, argv, "i:p:")) != -1)
    {
         switch (option)
         {
         case 'i':
             addr = strdup(optarg);
             break;
         case 'p':
             port = strdup(optarg);
             break;
         default:
              /* unrecognised option ... add your error condition */
              break;
         }
    }

    /* rest of program */

    return 0;
}
14
ответ дан 6 December 2019 в 07:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: