English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

程式的目的是要把data讀進來,讀進來後要把每個數值存在陣列裡,程式碼如下
***************************************************
#include
#include
#include
#include
using namespace std;
int main()
{
char ch[256],*c,*i;
i = ch;
int j=1; //j要從1開始
double a[256];
fstream input;
//ofstream newbook;
input.open(\"ver.txt\",ios::in);//讀檔
//newbook.open(\"c:\\\\new.txt\");//寫
while(!input.eof())
{
input.get(*i);
i++;
}
cout << ch < a[0] = strtod(ch,&c);
//a3 = strtod(c,&c);
//a4 = strtod(c,&c);
cout << a[0] < while(c!=\'\\0\')
{
a[j] = strtod(c,&c);
cout << a[j]< j++;
}
//cout << a2< //cout << a3< //cout << a4< input.close();
return 0;
}
**********************************************************
已經拜讀過龍大的解釋http://tw.knowledge.yahoo.com/question/?qid=1405121501319
但還是不能解決...............><
之前用 a,a2,a3,a4測試,是沒有問題的,難道字串的結束字元不是\'\\0\'嗎?
ver.txt如下
0 0 0
3 3 10
5 5 0
0 10 0
4 6 -8
請各位大大指點一下,小弟感激不盡.................

2006-05-11 14:23:07 · 1 個解答 · 發問者 伯琳 2 in 電腦與網際網路 程式設計

1 個解答

strtod的第二個參數它只是指向第一個不被認為是數字的地方,它不會管後面是什麼,如果你原來處理的是一個0結尾的字串那當然最後會是'\0',但是你從檔案用text mode讀進來在-8之後不一定有什麼東西.
如果你要用'\0'來判斷的話,建議:
1. ch[256]在使用前須初始化,例如memset(ch,0,sizeof(ch));裏面才不會不知是什麼
2. 在
while(!input.eof())
{
input.get(*i);
i++;
}
之後做一些處理,若最後有一個0x0a,把它代換為0
3. while(c!='\0')這邊有點問題,c要改為*c

2006-05-12 08:41:09 · answer #1 · answered by chan 5 · 0 0

fedest.com, questions and answers