strtol 函數將長整數的字串表示形式轉換為長值。但是,在使用此函數時,了解如何正確處理錯誤至關重要。
在給定的程式碼中,由於錯誤的假設而出現了問題。該程式碼依賴於這樣一個事實:如果 strtol 成功轉換字串,則第二個參數應等於 NULL。然而,這個假設並不總是成立。
為了有效地偵測strtol 的錯誤,有必要遵循正確的錯誤處理準則:
這是遵循以下原則的parseLong 函數的修訂版本:
static long parseLong(const char *str) { errno = 0; char *temp; long val = strtol(str, &temp, 0); if (temp == str || *temp != '<pre class="brush:php;toolbar:false">bool parseLong(const char *str, long *val) { errno = 0; char *temp; *val = strtol(str, &temp, 0); if (temp == str || *temp != '' || ((*val == LONG_MIN || *val == LONG_MAX) && errno == ERANGE)) { return false; } return true; }' || ((val == LONG_MIN || val == LONG_MAX) && errno == ERANGE)) { fprintf(stderr, "Could not convert '%s' to long and leftover string is: '%s'\n", str, temp); return 0; // or LONG_MIN/LONG_MAX if needed } return val; }
或者,單獨的錯誤處理從轉換結果來看,可以使用修改後的介面:
以上是如何正確使用strtol將字串轉換為長整數並處理潛在的錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!