所以我不知道當面對功能如何sscanf的有這樣一行:sscanf參數少於指定的參數?
sscanf(input_string, "%s %s %s", cmd1, cmd2, cmd3);
但說input_string只包含1個字符串標記。什麼值分配給cmd2和cmd3?是否有錯誤?
我正在使用GNU C編譯器。
所以我不知道當面對功能如何sscanf的有這樣一行:sscanf參數少於指定的參數?
sscanf(input_string, "%s %s %s", cmd1, cmd2, cmd3);
但說input_string只包含1個字符串標記。什麼值分配給cmd2和cmd3?是否有錯誤?
我正在使用GNU C編譯器。
什麼都不會分配給額外的參數。 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:");
http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/
成功時,該函數返回成功填補參數 列表中的項目數量。這個計數可以匹配預期的 項目的數量,或者在匹配失敗的情況下可以小於 - 甚至爲零。在 輸入失敗的情況下,任何數據可能成功地解釋爲 ,然後返回EOF。