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

[問題]如何讀檔開檔

尚未結案
ricel
一般會員


發表:6
回覆:6
積分:2
註冊:2005-03-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-27 22:25:41 IP:218.170.xxx.xxx 未訂閱
如何從檔案(如txt檔)中 一行一行的讀取內容 因為我剛學c 對於開檔讀檔老是想不通 所以想請高手們幫忙解答
ubong
一般會員


發表:2
回覆:42
積分:23
註冊:2002-10-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-27 23:28:08 IP:218.163.xxx.xxx 未訂閱
[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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-28 00:54:29 IP:59.104.xxx.xxx 未訂閱
FILE *fp;
char c;    fp=fopen("text.txt","r");
while((c=fgetc(fp))!=EOF)
  putchar(c);    fclose(fp);
發表人 - cashyy 於 2005/03/28 00:56:58 發表人 - cashyy 於 2005/03/28 01:00:48
ricel
一般會員


發表:6
回覆:6
積分:2
註冊:2005-03-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-28 07:59:14 IP:218.163.xxx.xxx 未訂閱
多謝前輩們的回應< > 我還有一個問題< > 如果檔案內容是篇英文文章 是否有什麼好方法去抓其中某個單字 發表人 - ricel 於 2005/03/28 08:00:01 發表人 - ricel 於 2005/03/28 09:29:27
superlevin
高階會員


發表:181
回覆:313
積分:180
註冊:2003-01-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-28 08:09:49 IP:211.76.xxx.xxx 未訂閱
引言: 多謝前輩們的回應< > 我還有一個問題< > 如果檔案內容是篇英文文章 是否有什麼好方法去找其中某個單字 發表人 - ricel 於 2005/03/28 08:00:01
use Pos function 程式不是寫來玩的 而是要創造價值
------
林壽山
網站: http://superlevin.ifengyuan.tw
mail: superlevin@gmail.com
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-28 08:22:01 IP:221.169.xxx.xxx 未訂閱
引言:
以下是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;//此行長度加上換行字元等於下一行位置
}
1.有些錯。fgets(str, sizeof(str), txtf); // 用 sizeof() 這樣比較保險,另只用到 str, 不是 &str. 2.參考一下這樣的方法。
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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-30 16:34:51 IP:61.221.xxx.xxx 未訂閱
引言: 多謝前輩們的回應< > 我還有一個問題< > 如果檔案內容是篇英文文章 是否有什麼好方法去抓其中某個單字 發表人 - ricel 於 2005/03/28 08:00:01 發表人 - ricel 於 2005/03/28 09:29:27
superlevin大大,所指的方法如下: 語法: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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-30 16:47:11 IP:218.163.xxx.xxx 未訂閱
sorry, 或許是我辭不達意 "是否有什麼好方法去抓其中某個單字" 是指抓第 n 個單字是否有 比一個一個地去判斷字元還要好的方法
powmien
初階會員


發表:27
回覆:80
積分:41
註冊:2004-10-20

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-03-30 17:34:04 IP:61.59.xxx.xxx 未訂閱
單字中間都有空格... 應該吧... XD 假設第一個單字前面沒空格的話, 那第二個單字就是n個空格之後的第一個非空格字元, 第三個單字就是n個空格之後的第二個非空格字元, 以此類推.... 好像不是很好的作法,讓別的前輩來解答好了 QQ 發表人 - powmien 於 2005/03/30 17:45:28
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-03-31 09:50:00 IP:221.169.xxx.xxx 未訂閱
在用 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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-04-01 11:00:59 IP:61.228.xxx.xxx 未訂閱
要從文字檔案中抓出單字的方法,可以使用fscanf
char text[25]; //預設單字最長的長度
FILE *file;
file=fopen("text.txt","r");
while(fscanf(file,"%s",text)!=EOF)
cout<        發表人 - georgeku 於 2005/04/01  11:12:39
        
系統時間:2024-04-20 16:28:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!