博客
关于我
十六进制用strtol()函数转换为十进制
阅读量:388 次
发布时间:2019-03-05

本文共 1040 字,大约阅读时间需要 3 分钟。

输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。

以下是实现这一功能的C语言程序:

#include 
#include
int main(void) { int i, j, k = 0, wei; long value; char a[100], b[100], *end; char shi[] = "0123456789abcdefABCDEF"; fgets(a, 100, stdin); for (i = 0; i < (int)strlen(a); i++) { for (j = 0; j < (int)strlen(shi); j++) { if (a[i] == shi[j]) { if (k == 0) { wei = i; } b[k] = a[i]; k++; } } } for (i = 0; i < wei; i++) { if (a[i] == '-') { for (j = k - 1; j >= 0; j--) { b[j + 1] = b[j]; } b[0] = '-'; k++; break; } } printf("%ld", strtol(b, &end, 16));}

这个程序首先读取输入字符串a,然后遍历每个字符,检查它是否是十六进制字符(包括字母和数字)。如果是,就将其添加到数组b中。同时记录第一个十六进制字符的位置wei,以便后续处理负数的情况。

在处理负数时,如果发现第一个十六进制字符之前存在“-”,则将b数组中的字符左移,插入“-”到前面,并增加k的值。

最后,使用strtol函数将十六进制字符串b转换为十进制数并输出结果。

转载地址:http://oiqwz.baihongyu.com/

你可能感兴趣的文章
Objective-C实现pooling functions池化函数算法(附完整源码)
查看>>
Objective-C实现porta密码算法(附完整源码)
查看>>
Objective-C实现Pow Logarithmic幂函数与对数函数算法 (附完整源码)
查看>>
Objective-C实现power iteration幂迭代算法(附完整源码)
查看>>
Objective-C实现powLinear函数和powFaster函数算法 (附完整源码)
查看>>
Objective-C实现pow函数功能(附完整源码)
查看>>
Objective-C实现prefix conversions string前缀转换字符串算法(附完整源码)
查看>>
Objective-C实现prefix conversions前缀转换算法(附完整源码)
查看>>
Objective-C实现pressure conversions压力转换算法(附完整源码)
查看>>
Objective-C实现Prim 算法生成图的最小生成树MST算法(附完整源码)
查看>>
Objective-C实现prime sieve eratosthenes埃拉托斯特尼素数筛选法算法(附完整源码)
查看>>
Objective-C实现PrimeCheck函数算法 (附完整源码)
查看>>
Objective-C实现PrimeFactors质因子分解算法 (附完整源码)
查看>>
Objective-C实现prim普里姆算法(附完整源码)
查看>>
Objective-C实现PriorityQueue优先队列算法(附完整源码)
查看>>
Objective-C实现proth number普罗斯数算法(附完整源码)
查看>>
Objective-C实现pythagoras哥拉斯算法(附完整源码)
查看>>
Objective-C实现QLearning算法(附完整源码)
查看>>
Objective-C实现QR正交三角分解法算法(附完整源码)
查看>>
Objective-C实现qubit measure量子位测量算法(附完整源码)
查看>>