如果確認字符串中只有空格分開的浮點數的話,可以利用壹個緩存字符串數組,?臨時保存當前字符到下壹個空格之間的字符,?然後利用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;}