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

Error in inputting 7 - 8 command line arguments

我一直在开发一个 C 程序,该程序接收一组浮点数并计算该数据集的 mean/median/mode、方差和标准差。目前,如果您输入 6 到 7 个浮点数作为参数,这些参数将被设置为零。但是,当使用少于六个或多于八个参数时,它不会出现同类问题。 这是具有此问题的程序的示例输出:

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

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

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++),所以我希望得到一些关于解决这个问题的意见

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

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,您可以进行一些错误检查。