简体   繁体   English

c中的命令行参数处理

[英]Command Line Argument processing in c

On running the below code, it stucks after displaying the argv[0] , argv[1] and argv[2] line. 在运行以下代码时,它在显示argv[0]argv[1]argv[2]行后卡住。 Further flow of code is blocked at this point, can any one help why it is stopping its execution or is it entering into an infinite loop. 此时将阻止进一步的代码流,这可以帮助任何人为何停止执行或进入无限循环。

#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;
}

Execution 执行

./file-exe 11111 127.0.0.1

Output 产量

Arg Count=3

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

fflush(NULL); fflush(NULL); is good to do after any output, if you want to make sure it prints to screen. 如果要确保将其输出到屏幕上,则最好在完成任何输出后执行。 printf is buffered, so it can get lost. 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

works fine, you needed some \\n to break up lines, like so.. 可以正常工作,您需要一些\\ n来拆分行,就像这样..

#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;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM