2014-02-16 55 views
0

我想從Wavefront OBJ文件中解析面。這些面在由線的文件中的一個指定的,具有下面的格式:從可選參數格式的字符串中讀取格式C/C++

f v1/vt1/vn1 v2/vt2/vn2 ... 

三聯體序列(V,VT,VN)的長度是可變。每個三元組由一個空格分隔,三元組內的每個值由a分隔。

到目前爲止好,使用strtok到分離的三胞胎,然後解析與 sscanf每個三聯和格式%f/%f/%f作品就好了。然而,在OBJ文件的規格,這條線可以有另一種形式,像這樣:

f v1//vn1 v2//vn2 ... 

在這種情況下,vt丟失,應該從所有的三胞胎失蹤,sscanf解析不會工作。

有沒有什麼辦法可以解析這個在C或C++爲了避免嵌套strtok

+0

使用[strsep](http://linux.die.net/man/3/strsep)。 – BLUEPIXY

回答

0

我想你可以先使用%f//%f格式,並檢查返回值。如果退貨少於兩個,請改爲使用%f/%f/%f格式,該格式應該適用於v,vt和vtn。