感谢你们所有人这次以某种方式工作。我忘了提到它是一个C ++类,所以有些代码看起来很复杂:)
最初的问题是:
编写一个程序,找到一组的最小值,最大值或平均值 浮点数字。你的程序的第一个参数将是a 用于指定用户所需操作的字符串:
min'',
max'',sum'', or
表示''。所有其他参数都是数字。
如果将main定义为接受参数
int main (int argc, char** argv[])
让我们说它被编译成一个可执行文件anexe.exe,使用我们在课堂上学到的程序的方法是在cmd或shell中输入以下内容: anexe max 1 2 3 4 5
===========
我的问题是:
参数应该放在一个数组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;
}
答案 0 :(得分:1)
首先,它是
char* argv[]
不是
char** argv[]
argv[x]
的数据类型为char*
即。 a(指向)许多char的数组,
未知计数,但以\0
终止
= C风格的字符串。
要将其转换为int类型,
例如,使用atoi
或sscanf
。
答案 1 :(得分:0)
根据您的编译器,您应该:
atof( char *str );
将char转换为float,正如我的同事指出的那样,你将拥有:
char* argv[]
不,char ** argv [];
答案 2 :(得分:0)
argv[i]
的类型为char *
;您的值参数将是浮点数的字符串表示,如"3.1415"
。要将浮点数的字符串表示形式转换为它的浮点数,可以执行以下操作之一:
#include <stdio.h>
...
double val;
int success = sscanf( argv[i], "%f", &val );
if ( success == 0 )
// argv[i] is not a valid floating-point number string
或
#include <stdlib.h>
#include <ctype.h>
...
double val;
char *chk;
val = strtod( argv[i], &chk );
if ( !isspace( *chk ) && *chk != 0 )
// argv[i] is not a valid floating-point number string
第二种方法捕获了第一种不会发生的错误,因此它是我喜欢的错误。
答案 3 :(得分:-1)
int value = atoi(argv[1].c_str());
应该有点帮助。