全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2200
推到 Plurk!
推到 Facebook!

關於讀檔問題

答題得分者是:Stallion
terrenceman
一般會員


發表:7
回覆:7
積分:2
註冊:2007-01-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-15 18:59:15 IP:140.115.xxx.xxx 訂閱
各位網站上的高手好:
小弟目前想讀取一.csv檔,讀取的方法如下:

void TForm1::LoadFile(AnsiString FilePath, char gxy[500][15][50], int *maxj, int *maxi )
{

FILE *OF;
int i, j, i2, j2;
char *tk, strpath[1000], buff[1000];

j= 0;

strcpy(strpath, FilePath.c_str());

if((OF= fopen(strpath, "r")) == NULL)
{
ShowMessage("開檔失敗");
}
else
{
while((fgets(buff, 1000, OF))!=NULL)
{
tk=strtok(buff, ",\n");
i= 0;

while(tk!= NULL)
{
strcpy( gxy[j][i], tk);
i ;
tk= strtok( NULL, ",\n");

}
j ;
}
fclose(OF);
}
*maxj=j;
*maxi=i;



但是讀取到最後因為.cvs檔案內,最後會有空白行,以致於最後回傳出來的i=0, j=420
原本程式內是一 i=7, j=419 的資料形式,我想請問該怎樣才能夠讀到正確的i , j值呢?
謝謝大家~~~

Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-15 19:20:21 IP:211.22.xxx.xxx 未訂閱
改一下看看~  <textarea cols="60" rows="10" class="cpp" name="code"> bool TForm1::LoadFile(AnsiString FilePath, char gxy[500][15][50], int *maxj, int *maxi ) { FILE *OF; int i, j, i2, j2; char *tk, strpath[1000], buff[1000]; strcpy(strpath, FilePath.c_str()); if((OF= fopen(strpath, "r")) == NULL) { ShowMessage("開檔失敗"); return false; } i = j= 0; while( !feof(OF) ) { fgets(buff, 1000, OF); if ( strlen(buff) <= 0 ) continue; tk = strtok(buff, ",\n"); while ( tk != NULL ) { strcpy( gxy[j][i], tk); i ; tk = strtok( NULL, ",\n"); } j ; } fclose(OF); *maxj=j; *maxi=i; return true; } </textarea>
編輯記錄
Stallion 重新編輯於 2007-05-15 19:50:47, 註解 無‧
Stallion 重新編輯於 2007-05-15 19:56:31, 註解 無‧
terrenceman
一般會員


發表:7
回覆:7
積分:2
註冊:2007-01-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-16 14:22:33 IP:140.115.xxx.xxx 訂閱
恩恩 我瞭解了~~~ 測試後已經可以用了! 謝謝stallion,感恩!!
系統時間:2024-05-08 1:40:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!