c语言字符串数组中有多个数字如何转化成浮点型数字

带e 带- 带小数点. 求解如何将这些数字挨个提取出来并存储
atof(const char* string)函数只能将第一个数输出出来 但是有多个数字怎么办?
比如 123 667.23 54e-2

c语言, sscanf 可以转数值字符串 为 数值。
第2个数值起,定位用:“如果前一个字符是空白,后一个是数字,就是数的开始”
n -- 帮你统计个数,若想把数据存入数组,则可以用n为下标。

#include <stdio.h>
#include <stdlib.h>
main()
{
char str[100]="123 667.23 54e-2";
int i,L,n=0;
double y;
L = strlen(str);
if (sscanf(str,"%lf",&y)){ printf("%g ",y);n++;} // 取第一个数值
for (i=1;i<L;i++)
if (str[i]==' ' && (str[i+1]>='0' && str[i+1]<='9')) {
sscanf(&str[i+1],"%lf",&y);
printf("%g ",y);
n++;
}
printf("-- total %d data I have read\n",n);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-03
#include<stdlib.h>
#include"string.h"

函数:
double atof(const char* string)

如果几个数字之间有分隔符的话,你可以自己分离出来;库函数的话,char* strtoke(char *,const char*)
相似回答