Re: [問題] 新增資料夾與開啟裡面資料

看板C_and_CPP (C/C++)作者 (藍影)時間15年前 (2010/12/21 03:59), 編輯推噓4(408)
留言12則, 3人參與, 最新討論串2/2 (看更多)
一開始看問題還看得懂在問什麼, 看到後來愈來愈模糊... : 問題(Question): : 1.能否新增資料夾 目前這些指令應沒被收為標準, 但許多 compiler 都有實做, 然而其 header 並沒一致, 但這些函式從 tc 時代就已經出來, 到現在仍有許多 compiler 會實做. VC: direct.h BCB: dir.h gcc: (沒用過,待其它人補充) (1) create folder: mkdir / _mkdir (2) change directory: chdir / _chdir (3) delete file: unlink / _unlink ; remove (4) get current directory: getcwd 如果只是要判斷檔案是否存在的話可以用 access, 這個函式可以判斷檔案不少狀態,單純看存不存在的話 if(access("filename.txt", 0)==0) // exists. else // doesn't exist. 其它有興趣的話自己再 access 挖出來玩玩。 要建立資料夾,一次只能建立一層;假設你要建立 C:\A\B 但連資料夾 A 都不存在的話,必須先建立 C:\A 再建立 C:\A\B。 上面這些事也可以用 Win32 API 去做上面這些事, 這樣的話就不用煩惱這個 compiler 要用哪個 header, 全都在 windows.h 裡面 CreateDirectory、CreateFile、DeleteFile、 GetCurrentDirectory、ChangeCurrentDirectory... etc windows.h 裡面針對檔案、目錄還有更多 API, 有興趣的話上 MSDN 查查。 : 2.fstream的open能否開啟除了程式資料夾內以外的txt檔 會問這個問題我推測應是 "相對路徑" 和 "絕對路徑" 沒有很熟.. -------------------- (1) fstream f; f.open("Read.txt", iso::in); // 在同一路徑開啟 Read.txt -------------------- (2) fstream f; f.open("..\\Read.txt", iso::in); // 在此資料夾上層開啟 Read.txt -------------------- (3) fstream f; f.open("D:\\Read.txt", iso::in); // 指定開啟 D:\ 底下之 Read.txt -------------------- 你平常用的是 (1) , 只是你現在換成 (3) 而已,不是嗎?

相對路徑?可以打開包含主程式的資料夾內的資料夾的資料嗎?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 看到後來我實在弄不懂你最終是要開啟檔案還是要開啟資料夾? 如果是要開啟資料夾的話等於是要歷遍該路徑的所有檔案與資料夾, 在此我假設你是要開啟的是檔案 假設你現在是在 C:\Test 路徑,要開啟檔案為 C:\Test\Sub1\Sub2\a.txt 以相對路徑之寫法 fstream f; f.open("\\Sub1\\Sub2\\a.txt"); : 我是想做一個類似記帳簿的程式,這問題真的很難解決嗎?(或者無解) ^^^^^^^^^^^^^^^^^ 恕我先打個插 我不是想為它版打廣告,而是真心認為 excel 可以絕對滿足你的需求. (excel 和 google 是我認為 21 世紀以來人類最偉大的發明..) 如果你要自己寫的話,難不難解決應是取決於 計劃的程式有多大、架構規劃的好不好. 如果你可以接受你所有存下來的檔案都是用 .csv / .txt 方式存 那和用什麼程式語言 "可能" 不會是太大關係, ( 頂多就是細節繁鎖一點而已) 架構規劃可能才是重點吧 : ------------------------------------------------- : 在補充個東西~我是不介意黑底白字的視窗啦~主要只是想把資料做分類而已 ^^^^^^^^^^^^^^^^^ Lincoln Beach Black Hole Organizer Collectify MyStuff -- YouLoveMe() ? LetItBe() : LetMeFree(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.76.142 ※ 編輯: tropical72 來自: 180.177.76.142 (12/21 04:28)

12/21 08:11, , 1F
感謝大大用心回覆~~我想開的還是資料啦~我寫的太亂了@@
12/21 08:11, 1F

12/21 08:14, , 2F
資料夾上層和下層(?)的定義是?
12/21 08:14, 2F

12/21 08:26, , 3F
先去弄清楚相對路徑和絕對路徑是什麼.
12/21 08:26, 3F

12/21 08:32, , 4F
我知道相對路徑和絕對路徑的意思啦@@
12/21 08:32, 4F

12/21 08:33, , 5F
只是我感覺第二個怎麼不是資料夾內的資料夾的檔案?
12/21 08:33, 5F

12/21 08:35, , 6F
看D://是D底下~那//的不就應該是某某底下(我的推測@@)
12/21 08:35, 6F

12/21 08:54, , 7F
你的斜線打反了.另,你有用過 cd .. 這個指令嗎?
12/21 08:54, 7F

12/21 08:55, , 8F
..\A 代表上一層的A; .\xxxx 代表這一層的A
12/21 08:55, 8F

12/21 08:58, , 9F
自己實際去try比較快啦.
12/21 08:58, 9F

12/21 12:24, , 10F
遵命~這些東西我還真的都沒碰過@@
12/21 12:24, 10F

12/21 14:45, , 11F
man 2 mkdir: int mkdir(const char *path, mode_t mode)
12/21 14:45, 11F

12/22 00:26, , 12F
剛剛測試完路徑的東西~歡呼的被室友當瘋子@@
12/22 00:26, 12F
文章代碼(AID): #1D3xM-B6 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1D3xM-B6 (C_and_CPP)