C++語言裡面字串內容分割的問題

2007-09-06 4:37 am
各位大大我想請問一下~
如果現在我讀取一個字元陣列
裡面內容大概是 "0.672 0.589 0.469 0.2"
每個數字中間用TAB鍵隔開
那我要怎樣轉換成FLOAT陣列,裡面陣列內容是有小數點數字呢?
轉換後內容變成(假設陣列名稱是A)
A[0] = 0.672
A[1] = 0.589
A[2] = 0.469
A[3] = 0.2

另外我的數字都很大(小數點位數有9)
像是0.186440678這種的,程式碼要怎麼修改?

麻煩知道的人給個詳解~~最好有程式碼~謝謝

回答 (2)

2007-09-07 4:52 am
✔ 最佳答案
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, char* argv[]){
//=====START=====//
char fstr[]="0.672\t0.589\t0.469\t0.2";
char *p,sep[]="\t";
double fdata[4];
int i=0;
printf("A String data: %s\n",fstr);
p=strtok(fstr,sep);
while(p!=NULL){
fdata[i]=atof(p);
printf("fdata[%d]= %lf\n",i,fdata[i]);
i++;
p=strtok(NULL,sep);
}
//=====END=====//
system("PAUSE");
return 0;
}
參考: 吸加加
2007-09-06 6:10 am
不能用 float!
它只有約 7 位有效!
你要用 double

2007-09-06 03:16:40 補充:
上述〝不能用 float〞是指會有明顯誤差。
你若不在意誤差,用 float 也可以寫得出來。

類似
for (i=0; i<n; i++)
scanf("%f", &A[i]); // 如果是 double 要用 %lf,不可用 %f

細節、錯誤未處理。你試試看。


收錄日期: 2021-04-27 17:15:46
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070905000010KK09033

檢視 Wayback Machine 備份