我有一個逗號分隔的字符串,可能包含空字段。例如:如何在支持空字段時使用sscanf解析逗號分隔字符串中的字段?
1,2,,4
使用基本
sscanf(string,"%[^,],%[^,],%[^,],%[^,],%[^,]", &val1, &val2, &val3, &val4);
我得到的空場之前,所有的值,然後從起空場意外的結果。
當我從的sscanf()刪除空字段的表達,
sscanf(string,"%[^,],%[^,],,%[^,],%[^,]", &val1, &val2, &val3, &val4);
一切順利的罰款。
由於我不知道什麼時候我會得到一個空字段,有沒有辦法重寫表達式來優雅地處理空字段?
是的,那就是如果我不能找到一個方法來適應sscanf的,我會去的路線。我仍然希望我可以適應我的sscanf,但據我所知[^,]不匹配空序列。 – Belrog 2009-10-02 10:28:56
@Belrog,似乎sscanf的內部計數器卡住了,如果字符串包含',,'。所以最好使用'strtok'。 – 2009-10-02 10:53:21
我真的不希望這樣做。我有一個長長的不同類型的值列表(字符/整數/浮點數)。這將意味着一個字段計數器和一個大的switch語句來正確地分配它。 *嘆息* – Belrog 2009-10-02 11:19:10