[問題]如何讀檔開檔 |
尚未結案
|
ricel
一般會員 發表:6 回覆:6 積分:2 註冊:2005-03-27 發送簡訊給我 |
|
ubong
一般會員 發表:2 回覆:42 積分:23 註冊:2002-10-02 發送簡訊給我 |
[code]
以下是C語言的語法,是我慣用的方法:
int pos=0; //設定讀檔位置
char str[81];//假設每一行至多80字
int most;
FILE *txtf;
txtf=fopen("test.txt","r");
fseek(txtf,0,2);//設定檔案位置在檔尾
most=ftell(txtf);//確定檔案長度
fseek(txtf,0,0);//設定檔案位置在檔頭,也可以用rewind(txtf);
for(;;) {
if(pos) >=most) break; //已經到檔尾
fgets(&str,80,txtf);
//加上你要如何處理讀出的字串處理程式碼
pos =strlen(str) 1;//此行長度加上換行字元等於下一行位置
} ubong
------
ubong |
cashyy
高階會員 發表:117 回覆:322 積分:212 註冊:2004-04-30 發送簡訊給我 |
|
ricel
一般會員 發表:6 回覆:6 積分:2 註冊:2005-03-27 發送簡訊給我 |
|
superlevin
高階會員 發表:181 回覆:313 積分:180 註冊:2003-01-12 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
引言:1.有些錯。fgets(str, sizeof(str), txtf); // 用 sizeof() 這樣比較保險,另只用到 str, 不是 &str. 2.參考一下這樣的方法。以下是C語言的語法,是我慣用的方法: int pos=0; //設定讀檔位置 char str[81];//假設每一行至多80字 int most; FILE *txtf; txtf=fopen("test.txt","r"); fseek(txtf,0,2);//設定檔案位置在檔尾 most=ftell(txtf);//確定檔案長度 fseek(txtf,0,0);//設定檔案位置在檔頭,也可以用rewind(txtf); for(;;) { if(pos) >=most) break; //已經到檔尾 fgets(&str,80,txtf); //加上你要如何處理讀出的字串處理程式碼 pos =strlen(str) 1;//此行長度加上換行字元等於下一行位置 } FILE *fp; fp = fopen("text.txt", "r"); char str[521]; while (fgets(str, sizeof(str), fp)) { // do something. } fclose(fp); // ps. 應加入 fopen fail..常用的函數有 fopen, fclose, fread, fwrite, fseek. 查一下 help 怎麼寫吧。 |
cashyy
高階會員 發表:117 回覆:322 積分:212 註冊:2004-04-30 發送簡訊給我 |
引言: 多謝前輩們的回應< > 我還有一個問題< > 如果檔案內容是篇英文文章 是否有什麼好方法去抓其中某個單字 發表人 - ricel 於 2005/03/28 08:00:01 發表人 - ricel 於 2005/03/28 09:29:27superlevin大大,所指的方法如下: 語法:int fastcall Pos(const AnsiString& substr) const; 功能:找出子字串在原字串中由第幾個位置開始 範例:String s1="wish you 一路發"; int n = s1.Pos("you"); Label1->Caption = n; 結果:6 |
ricel
一般會員 發表:6 回覆:6 積分:2 註冊:2005-03-27 發送簡訊給我 |
|
powmien
初階會員 發表:27 回覆:80 積分:41 註冊:2004-10-20 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
在用 fgets 取行一行之後。
ln[1024]; char *pstart; char *pend; fgets(ln.....); pstart = ln; pend = ln while (*pend) { if (*pend != ' ' || *pend != ',' ......) 這類的斷字符號。 pend ; else { 由pstart 到 pend 為一個單字。所以 *pend = '\0'; pstart 就是你要的一個單字。 之後再將 pstart 指到 pend 後面的那個字元 pstart = pend 1; } } 一直跑完就可以抓出這一行的所有單字了。自己去想,我只幫你到這邊。 我有隱藏了些要注意的事項沒有寫出來。而且也不是一個完整的程式 正確的作業內容,你得自己去試,才學得到東西了。 我也很希望其他人可以不要講出來。讓ricel可以有思考學習的機會。 就這樣。 ^_^ |
GeorgeKu
中階會員 發表:1 回覆:120 積分:74 註冊:2004-10-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |