看板 C_and_CPP 關於我們 聯絡資訊
各位好 我有一個二進位檔案, 放了一大堆字元,夾雜許多'\0'。 我要在此檔案中尋找特定字串, 最小單位是一個1 byte字元。 我先把檔案用fread()讀出來放到一個char array裡面, 然後用strstr()做字串比對, 但是我發現它遇到檔案中的'\0'就不做了, 於是'\0'之後的部份就比對不到了。 請問該怎麼解決這個問題呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.211.0.80 ※ 編輯: DJWS 來自: 218.211.0.80 (11/19 09:51)
vizshala:不要用字串的方式比較 11/19 09:56
vizshala:就當成二進位資料使用 11/19 09:57
littleshan:使用 memchr 11/19 10:10
DJWS:memchr是不是只能找一個字元? 11/19 11:09
bleed1979:傳入的參數是int 看來只能有一個字元 11/19 13:40
bleed1979:可以搜尋GREP 11/19 13:41
DJWS:樓上...我寫的是C,不是shell script。 11/19 14:03
bleed1979:GrepProgramDesign.html 這裡有GREP的實做設計,接網址 11/19 15:24
ledia:這個還稱不上 grep ... 字串筆對演算法可看 KMP / BM 11/19 15:27
ledia:要不就是全部讀進來慢慢比較 11/19 15:28
ledia:不用 string.h 裡的東西一樣寫得出來 11/19 15:28
DJWS:我目前是自己寫了一個kmp 我是想了解看看standard library 11/19 16:11
DJWS:有沒有什麼適合的函式 因為我對C不是很了解 (^_^")> 11/19 16:12
ledia:有 memmem 不過是 GNU extension, M$ 沒有類似的 function 11/19 18:02
ledia:或是至少我沒找到過 ^^| 11/19 18:02
DJWS:謝謝樓上指導 :) 11/20 09:01