感谢你们所有人这次以某种方式工作 . 我忘了提到它是一个C类所以有些代码看起来很复杂:)
最初的问题是:
编写一个程序,找到一组浮点数的最小值,最大值或平均值 . 程序的第一个参数将是一个字符串,用于指定用户所需的操作:min'',max'',sum'',ormean'' . 所有其他参数都是数字 .
如果main被定义为接受参数
int main (int argc, char** argv[])
让我们说它被编译成一个可执行文件anexe.exe,使用我们在课堂上学到的程序的方法是在cmd或shell中输入以下内容:anexe max 1 2 3 4 5
===========
My question is:
参数应该放在一个数组argv []中,而argv [0]是文件名,argv [1]是字符串min / max / sum / mean,而argv [2]和后来应该是数字 . 但这些数据类型是什么?他们是char吗?如果是这样,我怎样才能将它们转换为浮动?
===========我的代码是:
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
int main (int argc, char* argv[])
{
std::string option = std::string(argv[1]);
if (argc >1)
{
int i = 2;
if ( option == "min")
{
float least = atof (argv[2]);
for( i = 2;i <=(argc-1);i++)
{
int temp = atof(argv[i]);
if (temp < least)
{least = temp;}
}
cout <<"\n"<<least;
return 0;
}
4 回答
根据您的编译器,您应该具有:
将char转换为float,正如我的同事指出的那样,你将拥有:
不,char ** argv [];
首先,它是
不
并且
argv[x]
的数据类型是char*
即 . a(指向)许多char的数组,
未知计数,但以
\0
终止 .= C风格的字符串 .
要将其转换为int类型,
例如,使用
atoi
或sscanf
.argv[i]
的类型为char *
;你的值参数将是浮点数的字符串表示,如"3.1415"
. 要将浮点数的字符串表示形式转换为其浮点等效值,可以执行以下操作之一:要么
第二种方法捕获了第一种不会出现的错误,因此它是我喜欢的错误 .
应该有点帮助 .