首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >输入7-8命令行参数时出错

输入7-8命令行参数时出错
EN

Stack Overflow用户
提问于 2021-07-09 01:27:45
回答 1查看 30关注 0票数 0

我一直在编写一个C程序,它接受一组浮点数,并计算该数据集的平均/中值/模式、方差和标准差。目前,如果输入6到7浮点数作为参数,则这些参数设置为零。然而,当使用少于6个或8个以上的参数时,就没有相同的问题了。下面是这个问题的程序输出示例:

代码语言:javascript
运行
复制
statistics.exe 20 19 17 17 18 15 20 21
Dataset: 20.000 19.000 17.000 17.000 18.000 15.000 0.000 0.000

下面是负责将输入转换为程序可用的浮点数组的代码:

代码语言:javascript
运行
复制
int main(int argc, char *argv[]) {
    float *dataset;
    int length = argc-1;
    dataset = (float *) malloc(argc);
    for(int i = 0; i < length; i++) {
        dataset[i] = (float)atof(argv[i+1]);
    }
}

我对c++编程还比较陌生(来自C++),所以我希望能有一些关于解决这个问题的输入。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-09 01:49:25

您的解决方案可能如下所示:

代码语言:javascript
运行
复制
int main(int argc, char *argv[])
{
    float *dataset;
    int length = argc - 1;
    char *e, *p;

    dataset = calloc(length,sizeof(float));
    for(int i = 0; i < length; ++i) {
        dataset[i] = strtof(p = argv[i + 1],&e);
        if (e == p || *e) {
            fprintf(stderr,"Error converting value '%s'\n",p);
            exit(-1);
        }
    }
}

通过使用strtof而不是atof,您将得到一些错误检查。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68310224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档