如果确认字符串中只有空格分开的浮点数的话,可以利用一个缓存字符串数组, 临时保存当前字符到下一个空格之间的字符, 然后利用atof把它转换为浮点数,然后清空缓存字符串数组,继续读取,直到字符串尾
#include <stdlib.h>
#include <stdio.h>
#define FLOAT_ARRAY_LENGTH 100
#define BUFFER_LENGTH 30
void clear(char buffer[],int len) {
int i = 0;
for (; i < len; i++) {
buffer[i]='\0';
}
}
int main()
{
float f[FLOAT_ARRAY_LENGTH];/*保存识别出的浮点数,数组大小=?*/
int count=0;
char buffer[BUFFER_LENGTH]; /*保存当前字符到下一个空格间的字符*/
char prevChar=' '; /*保存当前字符前一个字符,以处理连续多个空格的情况*/
int j=0;
char *test = " 12345.67 0.1 1.0 .0 ";/*应该输出4个浮点数*/
for(int i=0;test[i]!='\0';i++){
if(test[i]!=' '){
buffer[j]=test[i];
prevChar=test[i];
j++;
} else if(prevChar!=' '){
f[count]=atof(buffer);
++count;
clear(buffer,BUFFER_LENGTH);
prevChar=' ';
j=0;
}/*如果有连续多个空格,则后面的空格无需处理,跳过即可*/
}
for (int i = 0; i < count; i++) {
printf("<%d> %15.3f\n", i, f[i]);
}
return 0;
}