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

C 語言,如何知道文字檔大小

尚未結案

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-20 04:57:29 IP:163.23.xxx.xxx 未訂閱
各位前輩:    (1) 請問一下,從一個檔案讀取資料並拷貝到另一個檔案 C 語言中有沒有已經內定的 function 可用 小弟是用隨機檔去讀取(避開遇到空格的麻煩) 用循序檔讀到另一檔案中,已經寫好了 是想問有沒有更簡捷的作法    (2) 當小弟把檔案拷貝完之後,想知道這檔案的大小 已知檔案路徑與名稱,不曉得該用什麼 function 再請前輩稍微的說明一下 function 怎麼用    謝謝 
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-20 08:33:30 IP:203.73.xxx.xxx 未訂閱
引言: 各位前輩: (1) 請問一下,從一個檔案讀取資料並拷貝到另一個檔案 C 語言中有沒有已經內定的 function 可用 小弟是用隨機檔去讀取(避開遇到空格的麻煩) 用循序檔讀到另一檔案中,已經寫好了 是想問有沒有更簡捷的作法 (2) 當小弟把檔案拷貝完之後,想知道這檔案的大小 已知檔案路徑與名稱,不曉得該用什麼 function 再請前輩稍微的說明一下 function 怎麼用 謝謝 < face="Verdana, Arial, Helvetica"> 流 你好: 想知道檔案的大小可用 GetFileSize 或 FindFirstFile 只要利用搜尋的功能,就可以在本站找到相關的範例 備註:
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-21 02:35:02 IP:163.23.xxx.xxx 未訂閱
包子哥您好:    小弟已經有看過您的精彩範例  > 還有小弟也不懂怎麼去找 > 這又算是另一大收穫 小弟還有一個問題 就是能讓使用者輸入的方式去合併檔案 不過小弟測試一下發現好像不行 小弟測試的 class="code"> #include "windows.h" #include "stdio.h" #include void main(void) { char *temp[10] ; int t , i = 0 ; HRESULT hr=S_FALSE; const char* szPath="c:\\temp\\*.txt"; WIN32_FIND_DATA wfd; HANDLE hFile=INVALID_HANDLE_VALUE; ZeroMemory(&wfd, sizeof(WIN32_FIND_DATA)); hFile=FindFirstFile(szPath, &wfd); if(hFile==INVALID_HANDLE_VALUE) { hr=GetLastError(); printf("\nFindFirstFile failed, error code=lX", hr); } else { printf("\nFind,FileName = %s", wfd.cFileName); temp[i] = wfd.cFileName ; } while(hFile!=INVALID_HANDLE_VALUE && FindNextFile(hFile, &wfd)) { i =1 ; printf("\nFind,FileName = %s", wfd.cFileName); temp[i] = wfd.cFileName ; } FindClose(hFile); printf("\n\n輸出所有檔案\n"); for(t=0;t<=i;t ) printf("\n(%d) %s" , t 1 ,temp[t]) ; getch(); } // end of main 小弟在那路徑下有四個文字檔 (測試用的) temp[0] ~ temp[3] 輸出的檔案都同一個檔名與副檔名...頭痛... 程式是想列出像 (1) 1.txt (2) 2.txt (3) 3.txt (4) 4.txt . .. . .. 當輸入者輸入 2 時,就能去開啟 2.txt 這個檔案 就是不需讓使用者去輸入完整的檔名與副檔名 請問有沒有辦法可以達到呢? 謝謝包子哥 ! 發表人 - 流 於 2003/11/21 10:54:37
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-21 09:44:14 IP:218.32.xxx.xxx 未訂閱
char *temp[10] ;// 這是10個char* 而不是10個字串耶。 char temp[10][10]; temp[i] = wfd.cFileName ; // String 才能用"="。 char 字串用 strcpy. strcpy(temp[i],wfd.cFileName ); 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-21 10:51:22 IP:163.23.xxx.xxx 未訂閱
包子哥您好:    程式一開始就列出指定路徑資料夾下的文字檔 小弟是想能不能預設 10 個字串指標去存這些檔案名稱 小弟是寫開啟一個文字檔,並輸出到另一個文字檔底下 但這些都是必須要使用者去輸入開啟的檔名 小弟是想能不能單純的就以輸入數字就能知道要開哪些檔案 程式碼如之前的文章    得到結果如下: 也就是小弟無法將列出的檔名存到字串指標陣列中 不曉得是出了什麼問題? 感謝包子哥 !

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-21 11:03:20 IP:163.23.xxx.xxx 未訂閱
引言: char *temp[10] ;// 這是10個char* 而不是10個字串耶。 char temp[10][10]; temp[i] = wfd.cFileName ; // String 才能用"="。 char 字串用 strcpy. strcpy(temp[i],wfd.cFileName ); 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D
anpino 您好: 先感謝您的回答,因為您提醒了小弟一個錯誤 BCB 用習慣就疏忽了... 小弟用
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-21 11:05:41 IP:203.73.xxx.xxx 未訂閱
引言: 包子哥您好: 程式一開始就列出指定路徑資料夾下的文字檔 小弟是想能不能預設 10 個字串指標去存這些檔案名稱 小弟是寫開啟一個文字檔,並輸出到另一個文字檔底下 但這些都是必須要使用者去輸入開啟的檔名 小弟是想能不能單純的就以輸入數字就能知道要開哪些檔案 程式碼如之前的文章 得到結果如下: 也就是小弟無法將列出的檔名存到字串指標陣列中 不曉得是出了什麼問題? 感謝包子哥 !
流 你好: 原來如此啊,有關你的問題 (無法將列出的檔名存到字串指標陣列中),anpino 大大應該已經回答你了,就是有關宣告的方式 (你一開始的方法並沒有配置記憶 體給你宣告的 10 個 char 指標),所以才無法把字串儲存,例如: char temp[10][64]; // 宣告 10 個字串 (每個記憶體為 64 bytes) // ............... lstrcpy(temp[i], wfd.cFileName); // 這樣才能把字串儲存 備註: 不一定要宣告 64 bytes,假如只要儲存檔名的話,宣告少一點就夠了,如果要 連路徑一起儲存的話,最好多宣告一點,以免放不下 --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --

中階會員


發表:36
回覆:142
積分:70
註冊:2003-07-24

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-21 11:24:06 IP:163.23.xxx.xxx 未訂閱
包子哥您好:    感謝您強而有力的解答!原來不能用字串指標去存檔名!? 小弟以為因為檔名大小不定,所以才想說指標形式應該解決 原來還有使用上還有這等差別  因為小弟手邊的書中使用這函式的方法如下 < class="code"> include char *strcpy (char *dest , const char *scr) ; 說名:由 scr 字串拷貝至 dest。傳回 dest 。 所以才不覺得使用上出了什麼錯誤 之前小弟加的程式是 strcpy(temp[i],wfd.cFileName) ; 難怪怎麼都行不通 直到小弟宣告為 temp[10][20] 才搞定 分數就給 anpino 大大,感謝 anpino 大大 但仍一樣感謝 包子哥 的解釋 否則小弟可能真的想不出來其中差異性 再一次謝謝 !
系統時間:2024-06-26 10:21:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!