如何输入数组

时间:2010-08-14 05:21:22

标签: c command-line user-input

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头文件....

我希望在命令行中输入的输入存储在输入数组中。 任何人都可以请更正我的代码.. 谢谢。

7 个答案:

答案 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;

}