[問題] 字串比對(二進位檔案)

看板C_and_CPP (C/C++)作者 (...)時間16年前 (2009/11/19 09:45), 編輯推噓4(4013)
留言17則, 5人參與, 最新討論串1/1
各位好 我有一個二進位檔案, 放了一大堆字元,夾雜許多'\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)

11/19 09:56, , 1F
不要用字串的方式比較
11/19 09:56, 1F

11/19 09:57, , 2F
就當成二進位資料使用
11/19 09:57, 2F

11/19 10:10, , 3F
使用 memchr
11/19 10:10, 3F

11/19 11:09, , 4F
memchr是不是只能找一個字元?
11/19 11:09, 4F

11/19 13:40, , 5F
傳入的參數是int 看來只能有一個字元
11/19 13:40, 5F

11/19 13:41, , 6F
可以搜尋GREP
11/19 13:41, 6F

11/19 14:03, , 7F
樓上...我寫的是C,不是shell script。
11/19 14:03, 7F

11/19 15:24, , 9F
GrepProgramDesign.html 這裡有GREP的實做設計,接網址
11/19 15:24, 9F

11/19 15:27, , 10F
這個還稱不上 grep ... 字串筆對演算法可看 KMP / BM
11/19 15:27, 10F

11/19 15:28, , 11F
要不就是全部讀進來慢慢比較
11/19 15:28, 11F

11/19 15:28, , 12F
不用 string.h 裡的東西一樣寫得出來
11/19 15:28, 12F

11/19 16:11, , 13F
我目前是自己寫了一個kmp 我是想了解看看standard library
11/19 16:11, 13F

11/19 16:12, , 14F
有沒有什麼適合的函式 因為我對C不是很了解 (^_^")>
11/19 16:12, 14F

11/19 18:02, , 15F
有 memmem 不過是 GNU extension, M$ 沒有類似的 function
11/19 18:02, 15F

11/19 18:02, , 16F
或是至少我沒找到過 ^^|
11/19 18:02, 16F

11/20 09:01, , 17F
謝謝樓上指導 :)
11/20 09:01, 17F
文章代碼(AID): #1B1ACtej (C_and_CPP)
文章代碼(AID): #1B1ACtej (C_and_CPP)