请问c语言有没有办法能让atof函数从一个字符串的指定位置开始运行,就比如下面这个程序
#include
#include
int main()
{
double d;
char str[] = "-123+84";
d=atof(str);
printf("string=%s\ndouble=%lf\n",str,d);
return 0;
}
运行结果:
string=-123+84
double=-123.000000
可以看出来atof遇到非数字符“+”停止了,那能不能下次让atof函数从“8”这个字符开始翻译
自己写个atof好了。
供参考:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int i, len = 0, flag, symbol;
double val[256] = { 0 };
char str[256] = { 0 };
printf("请输入表达式:");
gets(str);
for (i = 0, flag = 0; i < strlen(str); i++)
{
if (str[i] >= '0' && str[i] <= '9')
{
if (flag == 0)
{
symbol = 1;
if (i > 0 && str[i - 1] == '-') symbol = -1;
val[len++] = symbol * atof(&str[i]);
flag = 1;
}
}
else if (str[i] != '.')
flag = 0;
}
if (len <= 0) return 0;
for (i = 0; i < len - 1; i++)
printf("%f,", val[i]);
printf("%f", val[i]);
return 0;
}