我想要c 语言输入一个字符串(少于80个字符),删去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
时间: 2024-02-19 18:58:24 浏览: 57
编写程序,以字符形式输入一个十六进制数,将其变换为一个十进制整数后输出。(要求:十六进制允许的字符是从0~9和a~f或A~F)
5星 · 资源好评率100%
好的,以下是实现您的需求的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。
阅读全文