c中的命令行参数处理

标签 c command-line-arguments

在运行下面的代码时,它在显示 argv[0]argv[1]argv[2] 行后卡住了. 此时代码的进一步流动被阻止,任何人都可以帮助它停止执行或进入无限循环的原因。

#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

最佳答案

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

工作正常,你需要一些\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;
}

关于c中的命令行参数处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35765410/

相关文章:

c - C 中 open() 函数中的 "Permission denied"

c - 使用malloc()分配相同大小的内存时int*和char*有什么区别

c - 下面的 bash 程序调用做了什么?

c - Win32 API 命令行参数解析

c# - 从任务管理器启动进程并隐藏命令行参数

c - 使用最高有效位来标记 union 是否被认为是一种不好的做法?

c - 数组转换为长指针?

从 C 调用 Haskell FFI 函数 Ptrs

python - 将字典作为命令行参数传递

python - 获取命令行参数作为字符串