2011-10-23 74 views
3

我得到了這個格式的字符串:用C解析字符串 - 什麼是正確的工具?

Stuff: </value_1/value_2/value_3>; key="value" 

什麼,我需要解析出是value_1,與key/value對沿value_2value_3value_3可能存在或可能不存在於字符串中。

爲了完成這個工作,C中會用到什麼?

我想過sscanf但值可以是任意大小,所以它們應該動態分配。 strtok本來是我的下一個想法,但這可能需要兩個獨立的循環來提取/分開的值和key/value對...似乎很乏味,但至少是可行的。

任何有更多C語言經驗的人都有更好的主意嗎?

編輯:正則表達式可能是一個選項,但我更喜歡標準字符串函數,如果可能的話。

+0

**如果**格式是完全固定和明確的,您可以考慮使用正則表達式庫。 – Mat

+0

「value_1」是什麼類型 - 字符串或整數? – Clifford

+0

@Clifford他們是字符串 – Max

回答

1

如果使用"</>; =\""作爲分隔符集,然後strtok()函數將在單通道工作,進而提取:

Stuff: 
value_1 
value_2 
value_3 
key 
value 

不知道什麼Stuff:是或者如果需要提取,或只是你的一部分。