我的軟件驗證組正在測試的一段代碼如下所示:強制sscanf會比納參數的數目返回更多
unsigned int alarm_id;
char alarm_text[16];
static const char text_string[] = "105, Water_Boiling";
signed int arguments_satisfied =
sscanf(text_string,
"%3d, %16s",
&alarm_id, &alarm_text[0]);
if (arguments_satisfied < 2)
{
system_failure();
}
使用上面的代碼片段,有沒有辦法讓sscanf
返回一個值大於2而不更改格式說明符或將參數更改爲sscanf
?
他們正在使用單元測試工具行使if
語句表達式。
對於C++,編譯爲C++時,與上述片段有什麼不同嗎?
(我們計劃使用相同的代碼,但是可以編譯爲C++)。我們在IAR Embedded Workbench中使用ARM7處理器。
您是否試圖讓它返回大於2,或者您是否試圖確保您的if語句不會錯過失敗?但是,對於C++來說沒有區別。 – Carl
如果'text_string'的alarm_text字段的長度超過了16個或更多字符,'%16s'格式將在'alarm_text'數組的末尾寫入''\ 0'。 'alarm_text'數組需要有17個元素或格式說明符需要'%15s'。 –
在'system_failure'函數中,世界是否被炸燬? –