C语言:双解析存在吗? [重复]

问题描述 投票:-2回答:1

所以我有这个字符串:

1, 3.8  , 4.0 , 2 e

这个函数将我的stringcommatab分开并打印我的数字:

void readuserinput(char *ch)
{
    ch = strtok(ch, ", \t");
    char *ptr;
    double ret;
    while (ch)
    {
        ret = strtod(ch, &ptr);
        double d = atof(ch);
        printf("%f", d);
        ch = strtok(NULL, ", \t");
    }
}

所以如果我有非数字,例如e,任何机会检查它,以防万一这不是数字打印错误?

C语言是否有double解析或类似的东西?

c
1个回答
1
投票

您可以使用strtod将表单字符串转换为double。根据文档,它忽略空格字符,如果字符串不是有效的浮点数,则返回0.您应该能够轻松检查字符串的第一个非空格字符是否为零,以便能够检测是否有错误。

但请注意,如果字符串类似于1.23xer43,您将获得1.23(即它转换第一个字符)。

© www.soinside.com 2019 - 2024. All rights reserved.