这个问题在这里已有答案:
所以我有这个字符串:
1, 3.8 , 4.0 , 2 e
这个函数将我的string
与comma
和tab
分开并打印我的数字:
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
解析或类似的东西?
您可以使用strtod
将表单字符串转换为double。根据文档,它忽略空格字符,如果字符串不是有效的浮点数,则返回0.您应该能够轻松检查字符串的第一个非空格字符是否为零,以便能够检测是否有错误。
但请注意,如果字符串类似于1.23xer43
,您将获得1.23
(即它转换第一个字符)。