關於讀檔問題 |
答題得分者是:Stallion
|
terrenceman
一般會員 發表:7 回覆:7 積分:2 註冊:2007-01-05 發送簡訊給我 |
各位網站上的高手好:
小弟目前想讀取一.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 發送簡訊給我 |
改一下看看~
<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>
|
terrenceman
一般會員 發表:7 回覆:7 積分:2 註冊:2007-01-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |