输入一个以#结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,输出该字符串并将其转换为十进制数后输出。
时间: 2024-12-06 21:33:44 浏览: 100
在C语言中,你可以通过遍历输入的字符串,检查每个字符是否为十六进制字符(0-9和A-F/a-f),然后添加到结果字符串中。最后将整个字符串转换为整数(即十进制数)。以下是实现这个功能的一个简单示例:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char input[100];
fgets(input, sizeof(input), stdin); // 从用户输入读取字符串
int index = 0;
char hexStr[100] = ""; // 存放过滤后的十六进制字符串
for (int i = 0; input[i] != '\0'; i++) { // 遍历字符串
if (isxdigit(input[i])) { // 检查字符是否为十六进制
hexStr[index++] = tolower(input[i]); // 转换为小写并添加到新字符串
}
}
hexStr[index] = '\0'; // 结束字符串
long decimalNum = strtol(hexStr, NULL, 16); // 将字符串转换为十进制数
printf("十六进制字符串: %s\n", hexStr);
printf("十进制数值: %ld\n", decimalNum);
return 0;
}
```
这段代码首先读取用户输入的字符串,然后逐个字符检查是否为十六进制字符,并忽略非十六进制的字符。最后将剩下的十六进制字符转为小写形式并拼接成新的字符串,再将这个字符串转换为十进制数值。
阅读全文