我很困惑這個小問題,我有。我有一個非索引文件格式標題。 (更具體地說是ID3頭部)現在,這個頭部存儲一個字符串或三個字節的數據實際上是一個ID3標籤(TAG
是字符串btw。),現在這個TAG
在文件格式不是空封端的。因此,有可以做兩件事情:一個C風格的字符串文件格式難題
- 負載與
fread
和未終止字符串比較整個文件,使用strncmp
。但是:- 這聽起來很哈克
- 如果什麼有人打開它,並試圖操縱字符串W/O的這個先驗知識?
- 另一個選擇是文件被加載,但C結構不應該精確地映射到文件格式,但包含適當的null結束符,然後每個成員應該使用唯一調用進行加載。但是,這也令人感到不安和乏味。
幫助,尤其是來自具有處理這些東西的實際經驗的人的幫助,表示讚賞。
而且,用於解析,具體的,知名的文件格式,使用圖書館。 – 2009-10-18 14:31:10
我在談論一個更普遍的東西 - 如果它是一個任意長度的字符串呢? – aviraldg 2009-10-18 14:31:51
當您編寫文件格式解析器時,通常使用熟知的標籤/元數據。此外,從我的理解,你的代碼是關於檢測,而不是解析。所以,上述方法就足夠了。如果有一個任意長的字符串,頭文件最有可能有一個「長度」字段,這樣你可以事先'malloc'並且讀取數據。 – dirkgently 2009-10-18 14:35:30