我想要c 语言输入一个字符串(少于80个字符),删去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
时间: 2024-02-19 15:58:24 浏览: 20
好的,以下是实现您的需求的C语言代码:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main() {
char input_str[81];
printf("请输入一个字符串(少于80个字符):");
fgets(input_str, 81, stdin);
int len = strlen(input_str);
char hex_str[81] = {0};
int j = 0;
for (int i = 0; i < len; i++) {
if (isxdigit(input_str[i])) {
hex_str[j++] = input_str[i];
}
}
int decimal_num = strtol(hex_str, NULL, 16);
printf("%d", decimal_num);
return 0;
}
```
这段代码首先使用`fgets()`函数获取用户输入的字符串,然后使用`isxdigit()`函数判断每个字符是否为十六进制字符,将其组成新的十六进制字符串。接着使用`strtol()`函数将十六进制字符串转换为十进制数。最后输出十进制数。注意,如果用户输入的字符串中没有任何十六进制字符,则输出结果为0。
相关问题
我想要这个的C语言输入一个字符串(少于80个字符),删去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
好的,以下是代码实现:
```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` 转换为十进制数,并输出结果。
我想要这个全部的程序输入一个字符串(少于80个字符),删去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
好的,您可以使用以下Python代码来实现您的需求:
```python
import re
# 获取用户输入的字符串
input_str = input("请输入一个字符串(少于80个字符):")
# 使用正则表达式匹配所有的十六进制字符
hex_str = re.findall(r'[0-9a-fA-F]+', input_str)
# 将十六进制字符串转换为十进制数
decimal_num = int(''.join(hex_str), 16)
# 输出十进制数
print(decimal_num)
```
这段代码首先获取用户输入的字符串,然后使用正则表达式匹配所有的十六进制字符,将其组成新的十六进制字符串。接着将十六进制字符串转换为十进制数,最后输出十进制数。注意,如果用户输入的字符串中没有任何十六进制字符,则输出结果为0。