C语言:双解析存在吗?

时间:2017-12-17 13:30:13

标签: c

所以我有这个字符串:

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解析或类似的内容?

1 个答案:

答案 0 :(得分:1)

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

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