这期内容当中小编将会给大家带来有关C语言中怎么将字符串转换为一个整数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
函数:fun()
功能:将字符串转换为一个整数
描述:
【不能使用C语言提供的字符串函数】
输入:字符串"-1234"
输出:整型 -1234
思路:将字符串每个位置的字符进行对应的ASCII码转换
例如:字符 '0'-'9' 对应的十进制整数是48~57,那么,将对应的整数减去48就得到了对应的整数
二进制 | 十进制 | 十六进制 | 字符 |
---|---|---|---|
0011 0000 | 48 | 30 | 0 |
0011 0001 | 49 | 31 | 1 |
0011 0010 | 50 | 32 | 2 |
0011 0011 | 51 | 33 | 3 |
0011 0100 | 52 | 34 | 4 |
0011 0101 | 53 | 35 | 5 |
0011 0110 | 54 | 36 | 6 |
0011 0111 | 55 | 37 | 7 |
0011 1000 | 56 | 38 | 8 |
0011 1001 | 57 | 39 | 9 |
#include<stdio.h> #include<string.h> /** 函数:fun() 功能:将字符串转换为一个整数 描述: 【不能使用C语言提供的字符串函数】 输入:字符串"-1234" 输出:整型 -1234 **/ long fun(char *p) { int r = 0; //数字个数 long res = 0L; // 转化后的数字 int pos = 1; // 位数*10 *100 ... int size = strlen(p); // 字符串长度 if (p[0] == '-'){ r = size - 1; } else { r = size; } // 从前往后转换的话,需要分情况去计算。即:不是负数的话从p[0] 和 如果是负数的话需要从p[1]开始 // 所以,可以从后往前计算,循环次数是 r for (int i = 0; i < r; ++i) { res += (p[size-1-i]-48)*pos; pos *= 10; } return p[0]=='-'?-res:res; } int main(int argc, char const *argv[]) { char s[6]; printf("Enter a string: "); gets(s); long res = fun(s); printf("Convert Result: %ld\n", res); return 0; }
示例结果:
$ gcc ex1.c -o demo $ ./demo Enter a string: -1234 Convert Result: -1234 $ ./demo Enter a string: 9089 Convert Result: 9089
上述就是小编为大家分享的C语言中怎么将字符串转换为一个整数了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。