带 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 将用空指针终止 argv
,argv
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;
}
所以我尝试从命令行获取最大长度未知的用户输入。能够执行类似操作的程序需要动态输入字符串(也许是字符数组?)。结果应该是这样的
./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 将用空指针终止 argv
,argv
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;
}