2016-03-03 2 views
1

При запуске нижеследующего кода он запускается после отображения строк argv[0], argv[1] и argv[2]. Дальнейший поток кода блокируется в этот момент, может ли кто-нибудь помочь, почему он останавливает свое выполнение или входит в бесконечный цикл.Обработка аргументов командной строки в c

#include <stdio.h> 
#include <sys/socket.h> 
#include <netinet/in.h> 
#include <arpa/inet.h> 
#include <string.h> 
#include <stdlib.h> 
#include "p8log.h" 
#include <errno.h> 
int main(int argc, char* argv[]) 
{ 
     char* PORT; 
     char* IPADDR; 

     printf("Arg Count=%d\n",argc); 
     printf("Arguments are=%s,%s,%s\n",argv[0],argv[1],argv[2]); 

     printf("HELLO"); 

     PORT=argv[1], 
     printf("WORLD"); 
     IPADDR=argv[2]; 

     printf("START"); 
     printf("port num=%s",PORT); 
     printf("IP ADDR=%s",IPADDR); 
     printf("END"); 

     /* some algorithm of calculation */ 

     return 0; 
} 

Исполнение

./file-exe 11111 127.0.0.1 

Выходной

Arg Count=3 

Arguments are=./file-exe,11111,127.0.0.1 
+1

название является C++, но тег C. Какой язык вы используете? – MikeCAT

+0

По-видимому, нет контроля потока; маловероятно, что показанный код вызывает бесконечный цикл. Каков результат до сих пор? Является ли часть, где 'END' записывается на выход, когда-либо достигнутый? – Codor

+0

Вы передаете более двух аргументов? Проверьте 'argc' перед доступом к' argv [] ' – Constantin

ответ

1

fflush (NULL); хорошо делать после любого выхода, если вы хотите удостовериться, что он печатает на экране. printf буферизуется, поэтому он может потеряться.

./a.out 11111 127.0.0.1 
Arg Count=3 
Arguments are=./a.out,11111,127.0.0.1 
HELLO 
WORLD 
START 
port num=11111 
IP ADDR=127.0.0.1 
END 

работает нормально, то вам нужно немного \ п разбить строки, как так ..

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 
int main(int argc, char* argv[]) 
{ 
     char* PORT; 
     char* IPADDR; 

     printf("Arg Count=%d\n",argc); 
     printf("Arguments are=%s,%s,%s\n",argv[0],argv[1],argv[2]); 

     printf("HELLO\n"); 

     PORT=argv[1], 
     printf("WORLD\n"); 
     IPADDR=argv[2]; 

     printf("START\n"); 
     printf("port num=%s\n",PORT); 
     printf("IP ADDR=%s\n",IPADDR); 
     printf("END\n"); 
     fflush(NULL); 
     /* some algorithm of calculation */ 

     return 0; 
} 
Смежные вопросы