如何从C中的命令行接收arg

时间:2010-06-16 12:39:09

标签: c

我想编写一个程序来从命令行接收参数。这就像是一种atof()。

我的节目是:

  9     char s[] = "3.1415e-4";
 10     if (argc == 1) {
 11         printf("%e\n",atof(s));
 12     }
 13     else if (argc == 2) {
 14         //strcpy(s, argv[1]);
 15         printf("%e\n",atof(argv[1]));
 16     }

1.我应该使用argv [1]将字符串传递给我的atof(),还是将其放入s []?

2.如果我最好把它放在s []中,是否有一些内置功能来做“放”工作?也许某些函数就像strcpy()??

感谢。

3 个答案:

答案 0 :(得分:0)

无需将其放入s。只需使用argv[1]

说完这个之后,你是还是把它放进去了(这不是那么糟糕)确保你将代码更改为:

char s[20];
strcpy(s, argv[1]);

strcpy与常量char数组一起使用不是一个好主意。

答案 1 :(得分:0)

您只需将其传递为argv[1],无需复制。如果要复制它,您需要确保s实际上可以保存argv[1]中包含的完整字符串,并且如果不是,则分配更大的数组...因此它更加混乱。

答案 2 :(得分:0)

我个人会这样做:

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char **argv)
{
  const char defaultStr[]="3.1415e-4";
  const char *arg = NULL;
  if(argc <= 1)
  {
     arg = defaultStr;
  }
  else
  {
     arg = argv[1];
  }

  printf("%e\n", atof(arg));

  return 0;
}