Привет я пишу простую программу клиент-сервер. В этой программе я должен использовать getopt()
получить номер порта и IP-адрес как это:
сервер-i 127.0.0.1-p 10001
Я не знаю, как я могу получить значения от optarg, для использования позже в программе.
Как насчет такого:
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.
.Вы используете цикл 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;
}