带有argv的C用户动态输入



因此,我尝试从命令行获取未知最大长度的用户输入。程序要想做到这一点,需要动态输入字符串(可能是char数组?(。结果应该类似

/a.out st1你的str是。。。

我唯一能想到的代码是以下

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将用一个空指针终止argv,而argv是可修改的,因此实际上很容易像在bash脚本中那样实现shift。您的基础可能如下所示。

#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 %sn", arg);
return 0;
}

最新更新