阅读量:2
在测试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
之间,以及是否有非法字符和空格。您可以根据具体需求和情况扩展测试用例。