看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我這幾天需要讀出一個資料夾的檔案名 我已經順利可以讀出了 例如: a.txt b.txt c.txt 但 我只需要 a 這個字串 我試著使用 sscanf("a.txt","%s.bmp",str); 結果 : str = a.txt 我上網查一下 : 似乎必須使用 %[^] 這類判斷式 我把程式 改成 sscanf("a.txt","%[^.]",str); 結果 : str = a 這樣看似解決我的問題了 但 如果檔名是 1.a.txt sscanf("1.a.txt","%[^.]",str); 結果 : str = 1 他似乎讀到第一個 '.' 就停止了 如果我想要完成我的需求 我的判別式 要怎麼寫呢 查了好久 還是解不出來 還麻煩各位大大給予指導 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.230.10.200
tropical72:我看完說明,還是看不懂你的需求為何,格式有三種,所以? 08/29 21:43
firejox:你有搞懂%[^]的意思嗎 08/29 21:43
firejox:而且假如你只需要a 這個字串 那為何不直接str = "a" 08/29 21:45
Rpdk:抱歉 我可能打的比較糟糕. 最簡單來說 我想取出 1.a 這種檔名 08/29 21:46
tropical72:延伸副檔名都相同嗎? 08/29 21:46
Rpdk:因為 我那個資料夾裡有很多檔 而且檔名又沒規則 想在沒改檔名 08/29 21:47
Rpdk:前提下取出檔名 副檔名都是 txt 謝謝 08/29 21:48
tropical72:sscanf 應辦不到,因貪婪法則關係,建議自己另寫一隻。 08/29 21:58
firejox:strrchr 08/29 22:04
firejox:記得include string.h 08/29 22:07
alongalone:如果是我就直接把後面四個byte直接換掉...= =||| 08/29 22:26
kasase:strndup(str, strrchr(str, '.') - str) 08/29 22:47
kasase:回傳的東西要自己free 08/29 22:48
cutecpu:硬要用 sscanf 的話,可以把檔名 reverse 拿去 sscanf 08/29 23:36
cutecpu:得到 str 後,再把 str reverse 回來就是你要的結果 XD 08/29 23:36