我想编写一个程序来从命令行接收参数。这就像是一种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()??
感谢。
答案 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;
}