温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言中怎么将字符串转换为一个整数

发布时间:2021-07-02 16:31:25 来源:亿速云 阅读:1022 作者:Leah 栏目:大数据

这期内容当中小编将会给大家带来有关C语言中怎么将字符串转换为一个整数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。


1 题目

函数:fun()

功能:将字符串转换为一个整数

描述:

【不能使用C语言提供的字符串函数】

输入:字符串"-1234"

输出:整型 -1234

2 思路

思路:将字符串每个位置的字符进行对应的ASCII码转换

例如:字符 '0'-'9' 对应的十进制整数是48~57,那么,将对应的整数减去48就得到了对应的整数

二进制    十进制十六进制字符
0011 000048    30      0    
0011 000149    31      1    
0011 001050    32      2    
0011 001151    33      3    
0011 010052    34      4    
0011 010153    35      5    
0011 011054    36      6    
0011 011155    37      7    
0011 100056    38      8    
0011 100157    39      9    

3 代码

#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语言中怎么将字符串转换为一个整数了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI