如何在C中从命令行接收参数
我想写一个程序来接收来自命令行的参数。它就像一种atof() 我的计划是这样的:如何在C中从命令行接收参数,c,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]));
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[]中,是否有一些内置函数来完成这个“put”工作?可能是strcpy()之类的函数
谢谢。无需将其放入
s
。只需使用argv[1]
话虽如此,您是否正在将其放入s中(这还不错)请确保将代码更改为:
char s[20];
strcpy(s, argv[1]);
对常量字符数组使用strcpy不是一个好主意。您只需将其作为
argv[1]
传递即可,无需复制。如果您想复制它,您需要确保s
实际上可以保存argv[1]
中包含的完整字符串,如果没有,则分配一个更大的数组。。。所以这是梅西耶。我个人会这样做:
#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;
}
#包括
#包括
int main(int argc,字符**argv)
{
const char defaultStr[]=“3.1415e-4”;
常量字符*arg=NULL;
if(argc,谢谢,Pablo Santa Cruz和Péter Török。但有一件事让我困惑,参数的类型是char*,如何将参数放入s[]?@dennis,char[]
\u在需要时会降级为char*
。这意味着在实践中,这两种符号的底层内存表示形式实际上是相同的,并且您可以在大多数情况下互换使用这两种符号。例外情况是,您不能重新分配数组,即s=argv[1]
导致编译错误。如果要复制argv[1]
的内容,请使用前面提到的strcpy
。