连接所有参数(可执行文件名除外)

Del*_*ani 1 c linux

是否有一个C函数可以将所有传递的参数(可执行文件的名称除外)连接成一个char*并返回它?

Joh*_*iss 5

试试看:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char **argv) {
    unsigned int i;
    size_t len = 0;
    char *_all_args, *all_args;

    for(i=1; i<argc; i++) {
        len += strlen(argv[i]);
    }

    _all_args = all_args = (char *)malloc(len+argc-1);

    for(i=1; i<argc; i++) {
        memcpy(_all_args, argv[i], strlen(argv[i]));
        _all_args += strlen(argv[i])+1;
        *(_all_args-1) = ' ';
    }
    *(_all_args-1) = 0;

    printf("All %d args: '%s'\n", argc, all_args);

    free(all_args);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)