设计一个函数,以字符指针为参数,判断一个字符串是否为纯数字串,若是则返回其十进制值,否则返回-1。
时间: 2024-12-28 21:30:22 浏览: 11
设计这样一个函数可以使用循环遍历输入的字符指针,同时检查每个字符是否为数字字符。如果发现非数字字符,立即停止并返回-1,如果遍历结束且所有字符都是数字,再将它们转换成整数并返回。这里有一个简单的C语言示例:
```c
#include <ctype.h>
// 函数原型,传入一个char*参数代表字符串
long long isNumericStringToDecimal(const char* str) {
long long decimalValue = 0; // 初始化结果变量
int sign = 1; // 标记正负号,默认为正
if (str[0] == '-' || str[0] == '+') { // 检查开头是否有符号
sign = (str[0] == '-') ? -1 : 1;
str++; // 移动到下一个字符
}
for (; isspace(*str); str++) {} // 跳过开头的空格
if (*str == '\0') { // 如果字符串为空或只包含空格,返回-1
return -1;
}
if (!isdigit(*str)) { // 非数字字符,返回-1
return -1;
}
while (isdigit(*str)) { // 遍历数字字符,累加进decimalValue
decimalValue = decimalValue * 10 + (*str - '0');
str++; // 移动到下一个字符
}
return sign * decimalValue; // 返回计算后的整数值
}
int main() {
char str1[] = "12345";
char str2[] = "-6789";
char str3[] = "abc123"; // 包含字母,非纯数字
printf("%lld\n", isNumericStringToDecimal(str1)); // 输出结果
printf("%lld\n", isNumericStringToDecimal(str2)); // 输出结果
printf("%lld\n", isNumericStringToDecimal(str3)); // 输出结果
阅读全文