2012-10-08 59 views
1

所以我不知道當面對功能如何sscanf的有這樣一行:sscanf參數少於指定的參數?

sscanf(input_string, "%s %s %s", cmd1, cmd2, cmd3); 

但說input_string只包含1個字符串標記。什麼值分配給cmd2和cmd3?是否有錯誤?

我正在使用GNU C編譯器。

回答

3

什麼都不會分配給額外的參數。 sscanf的回報告訴您成功完成了多少次轉換,因此在這種情況下,它將返回1。通常,只需比較你所期望的數量,假設輸入否則不好:

if (3 != sscanf(input_string,"%s %s %s", cmd1, cmd2, cmd3)) 
    fprintf(stderr, "Badly formatted input (expecting three strings)\n"); 

當你從文件中讀取,你經常要在一個循環,直到你得到正確的輸入來執行:

while (3 != scanf("%s %s %s", cmd1, cmd2, cmd3)) 
    fprintf(stderr, "Please enter 3 strings:"); 
2

http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/

成功時,該函數返回成功填補參數 列表中的項目數量。這個計數可以匹配預期的 項目的數量,或者在匹配失敗的情況下可以小於 - 甚至爲零。在 輸入失敗的情況下,任何數據可能成功地解釋爲 ,然後返回EOF。