在測試strtol
函數的邊界條件時,通常可以考慮以下幾種情況:
LONG_MIN
或大于LONG_MAX
。LONG_MAX
或小于LONG_MIN
的情況。以下是一個簡單的測試代碼示例:
#include <iostream>
#include <cstdlib>
#include <climits>
int main() {
const char *str = "12345";
char *endptr;
long num = strtol(str, &endptr, 10);
if ((num == LONG_MIN || num == LONG_MAX) && errno == ERANGE) {
std::cout << "Overflow or underflow detected" << std::endl;
} else if (*endptr != '\0' && *endptr != ' ') {
std::cout << "Invalid character found in input" << std::endl;
} else {
std::cout << "Parsed number: " << num << std::endl;
}
return 0;
}
在此示例中,我們測試了數字范圍是否在LONG_MIN
和LONG_MAX
之間,以及是否有非法字符和空格。您可以根據具體需求和情況擴展測試用例。