输入16进制数转十进制c语言代码不使用strlen函数
时间: 2024-12-19 12:24:11 浏览: 9
在C语言中,将16进制数转换为10进制可以使用`scanf`、`for`循环以及`conver.toInt`这样的转换函数,但由于标准库中没有直接提供将十六进制字符串转换为整数的函数,我们可以自定义一个辅助函数。这里是一个简单的示例,不使用`strlen`函数:
```c
#include <stdio.h>
#include <string.h>
// 辅助函数,用于计算字符到10进制的值
int hexToInt(char c) {
if ('0' <= c && c <= '9') {
return c - '0';
} else if ('A' <= c && c <= 'F') {
return c - 'A' + 10;
} else if ('a' <= c && c <= 'f') {
return c - 'a' + 10;
}
// 如果输入的不是有效的十六进制字符,返回0
return 0;
}
// 主函数
int main() {
char hexNum[100]; // 假设输入的16进制数长度不超过99位
printf("请输入一个16进制数: ");
scanf("%s", hexNum);
int decimal = 0; // 存储最终的10进制结果
for (int i = 0; hexNum[i]; i++) { // 遍历直到遇到空字符
decimal <<= 4; // 左移四位相当于乘以16
decimal += hexToInt(hexNum[i]); // 加上当前字符对应的十进制数值
}
printf("16进制数 %s 转换成10进制为 %d\n", hexNum, decimal);
return 0;
}
```
阅读全文