C语言 字符串转换整数,整数转换字符串的实现

函数原型

#include <stdlib.h>

int atoi(const char *nptr);
/**************************************
*功能:将一个字符串转换成整数
*参数:
*	const char *nptr:不可修改内容的字符串 char*类型
*返回值:int类型 转换后的整数
**************************************/

另外,我没有发现C语言中整数转换字符串的函数。

实现字符串转换整数

//给定一个字符串 转化为整数
int myatoi(char *str){
    int flag = 0;   //如果是负数   flag = 1
    int num = 0;
    //str首地址是'-' 或者 '+' 往后移
    if(*str == '-'){
        flag = 1;
        str++;
    }
    else if(*str == '+')
        str++;
	
	//*str 只在0-9之间才转换,否则退出
    while(*str>='0' && *str<='9'){
        num = num*10 + (*str-'0');
        str++;
    }
    if(flag) return -1*num;	
    else return num;
} 

实现整数转换字符串

//将整数转化成字符串
char *itoa(int num){
    char *str;
    char *head = str;	//记录首地址,好返回
    int x;
    int flag = 0;	//标记num是否为负数
    int len; //统计字符串长度
    //如果num<0 直接取绝对值  flag标记
    if(num<0){
        num *= -1;
        flag = 1;
    }
    while(num){
        x = num % 10;
        *str = x + '0';		//x + '0'就变成字符了
        str++;
        len++;
        num /= 10;
    }
    if(flag){
        *str++ = '-';
        len++;
    }
    *str = '\0';	//'\0'很重要
    str = head;
    char tmp;
    //得到的字符串是倒着的,比如num=-153  那么str=351-  所以需要逆序
    for(int i=0; i<len/2; i++){
        tmp = str[i];
        str[i] = str[len-i-1];
        str[len-i-1] = tmp;
    }
    return head;	//str 和 head都指向首地址,返回哪一个都可以
}

测试

int main(int argc, char *argv[])
{ 
    int num = myatoi("-45av");
    printf("str=\"-45av\" --> num=%d\n", num);
    char *p = itoa(-1542);
    printf("num=-1542 --> str=%s\n", p);
    return 0;
} 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值