2012-04-10 71 views
1

我有一串字符,類似於「asdf + lghd + ewre + fdsf + ...」,長度各不相同。從這我也有一個模板用於sscanf函數,類似於「%s +%s +%s + ...」。由於這兩個參數的長度都不相同,是否可以在sscanf中用數組字符串的動態數組來替換那些額外的參數?例如:可能用數組替換sscanf參數

char *test = "adfe + asdf + fghe + jklo"; 
char *template = "%s + %s + %s + %s"; 
char destination[4][4]; 
sscanf(test, template, destination); 

從眼前看起來這似乎不起作用,那麼有沒有其他方法可以做到這一點?

回答

0

sscanf()不支持這一點,但你可以編寫自己的scanf版本。

我已經在C#中完成了這個工作,並且發佈了代碼here。也許我的代碼會給你一些用C編寫定製版本的想法。

0

你想要做的是不可能與sscanf。你將不得不循環它。

0

編號sscanf與'C'中的所有xxxxxf函數一樣,通過在參數列表中具有可變數目的參數來工作。如果您正在查找4個字符串(4%s),則該函數需要4個字符數組的參數。在你的例子中,你提供了一個由4個字符數組組成的數組。

一種可行的方法是使用任何分隔符來解析輸入。看看函數substr和pos的一些提示如何做到這一點。