我想要这个的C语言输入一个字符串(少于80个字符),删去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
时间: 2024-02-25 13:59:17 浏览: 86
编写程序,以字符形式输入一个十六进制数,将其变换为一个十进制整数后输出。(要求:十六进制允许的字符是从0~9和a~f或A~F)
5星 · 资源好评率100%
好的,以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[80];
printf("请输入一个字符串(少于80个字符):");
scanf("%s", str);
int len = strlen(str);
char hex_str[80] = ""; // 存储十六进制字符串
int count = 0; // 记录十六进制字符数量
for (int i = 0; i < len; i++) {
if ((str[i] >= '0' && str[i] <= '9') || (str[i] >= 'A' && str[i] <= 'F') || (str[i] >= 'a' && str[i] <= 'f')) {
hex_str[count] = str[i];
count++;
}
}
long decimal_num = strtol(hex_str, NULL, 16); // 将十六进制字符串转换为十进制数
printf("转换后的十进制数为:%ld", decimal_num);
return 0;
}
```
以上代码中,我们使用了 `strlen` 函数来获取输入字符串的长度,然后遍历每一个字符,如果它是十六进制字符,则将其添加到 `hex_str` 中,并且记录十六进制字符数量。最后,我们使用 `strtol` 函数将 `hex_str` 转换为十进制数,并输出结果。
阅读全文