带 argv 的 C 用户动态输入

C user dynamic input with argv

所以我尝试从命令行获取最大长度未知的用户输入。能够执行类似操作的程序需要动态输入字符串(也许是字符数组?)。结果应该是这样的

./a.out st1 your str is ...

我能想到的唯一代码如下

int main (int argc, char* argv[]){
    ...
    char str1[];
    str1 = argv[1];
    printf("your...);
    ...
}

元素数量为空的块作用域数组声明:

char str1[];

不正确。此外数组没有赋值运算符:

str1 = argv[1];

你可以声明一个指针:

char *str1;
str1 = argv[1];
printf("your...);

C 将用空指针终止 argvargv is modifiable, so it's actually very easy to implement shift like in bash scripts。您的基础可能如下所示。

#include <stdio.h>

int main(int argc, char *argv[]) {
    char *arg;
    if(!argc || !argv[0]) return 0; /* Defensive */
    while(arg = *(++argv))
        printf("do something with %s\n", arg);
    return 0;
}