C语言编程,请使用指针输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新的字符串(十六进制形式),然后将其转换为十进制数后输出。【样例输入】+A 【样例输出】Hex=10
时间: 2024-02-18 11:04:08 浏览: 71
以下是使用指针实现的 C 语言程序,实现了上述功能:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[81], hex_str[81];
int i, j, hex_num = 0;
char *p_str, *p_hex_str;
// 读入字符串
printf("请输入一个字符串:\n");
fgets(str, 81, stdin);
p_str = str;
// 过滤非十六进制字符
p_hex_str = hex_str;
while (*p_str != '\0' && *p_str != '\n') {
if (isxdigit(*p_str)) {
*p_hex_str = *p_str;
p_hex_str++;
}
p_str++;
}
*p_hex_str = '\0'; // 补上字符串结束符
// 转换为十进制数
p_hex_str = hex_str;
while (*p_hex_str != '\0') {
hex_num *= 16;
if (isdigit(*p_hex_str)) {
hex_num += *p_hex_str - '0';
} else {
hex_num += toupper(*p_hex_str) - 'A' + 10;
}
p_hex_str++;
}
// 输出结果
printf("Hex=%d\n", hex_num);
return 0;
}
```
程序中使用指针变量 `p_str` 和 `p_hex_str` 分别指向字符串数组 `str` 和 `hex_str`,程序的其他部分与数组实现的程序相似。需要注意的是,在使用指针变量作为实参调用 `fgets` 函数时,实参应该是数组名加上数组长度减一(因为 `fgets` 函数会读入换行符)。
阅读全文