首页 文章

数组中的数据类型

提问于
浏览
-2

感谢你们所有人这次以某种方式工作 . 我忘了提到它是一个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 回答

  • -1

    根据您的编译器,您应该具有:

    atof( char *str );
    

    将char转换为float,正如我的同事指出的那样,你将拥有:

    char* argv[]
    

    不,char ** argv [];

  • 0

    首先,它是

    char* argv[]
    

    char** argv[]
    

    并且 argv[x] 的数据类型是 char*
    即 . a(指向)许多char的数组,
    未知计数,但以 \0 终止 .
    = C风格的字符串 .

    要将其转换为int类型,
    例如,使用 atoisscanf .

  • 1

    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
    

    第二种方法捕获了第一种不会出现的错误,因此它是我喜欢的错误 .

  • 0
    int value = atoi(argv[1].c_str());
    

    应该有点帮助 .

相关问题