main(int c,char **args){
int i
char input[100];
bzero(input,100);
for(i=1;i<c;i++)
{
input=strcat(input,args);
input=strcat(input," ");
}
}
我已经包含了string.h头文件....
我希望在命令行中输入的输入存储在输入数组中。 任何人都可以请更正我的代码.. 谢谢。
答案 0 :(得分:2)
你有两个致命的问题 - 第一个是你需要访问参数数组的args[i]
成员,第二个是你不能直接分配给input
变量,因为这是一个数组。
另外:
input
数组中是否有足够的空间; main()
; 以下是修复这些问题的原因:
int main(int c, char **args)
{
int i;
char input[100];
bzero(input, 100);
for(i = 1; i < c; i++)
{
if (strlen(input) + strlen(args[i]) + 2 <= 100)
{
strcat(input, args[i]);
strcat(input, " ");
}
}
puts(input);
return 0;
}
(我还添加了puts()
行,以便您可以看到input
中的内容。
答案 1 :(得分:1)
这将解决问题。
main(int c,char **args){
int i
char input[100];
bzero(input,100);
for(i=1;i<c;i++)
{
strcat(input,args[i]);
strcat(input," ");
}
}
答案 2 :(得分:0)
你很亲密 - 试试strcat(input, args[i])
。
答案 3 :(得分:0)
“char ** args”已经是一个字符串数组。这跟“char * args []”是一样的。
答案 4 :(得分:0)
int c 是参数的数量加上文件的名称,c的值是整数,并给出为(传递的参数数量+ 1)
char ** args 包含指向您传递的参数的指针。
您需要更改程序的第7行,如下所示;
输入= strcat的(输入,ARGS [I]);
答案 5 :(得分:0)
main(int c, char **args)
{
while( c-- )
printf(" %s",*args++);
return 0;
}
答案 6 :(得分:0)
如果您不想将程序限制为100个字符输入。您可以使用realloc动态扩展数组输入的大小。
避免使用 bzero ,而是使用属于标准的 memset 。即使你可以省略那一行。
int main(int c, char **args) {
int i;
int limit = 100;
char *input = calloc(limit,sizeof(limit));
memset(input,0, limit * sizeof(char)); // No need but better than bzero.
for (i=0;i<c;i++) {
if (strlen(input) + strlen(args[i]) + 2 > limit) { //avoiding input overflow.
limit = strlen(input) + strlen(args[i]) + 2;
input = realloc(input,limit);
}
strcat(input,args[i]);
strcat(input," ");
}
puts(input);
free(input);
return 0;
}