字符串与数字转换-C语言

字符串与数字转换-C语言

/**
 * by: 小林
 * time: 2016-01-15
 */ 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*字符串转换为整数*/
int myAtoi(char *array)
{
    int result = 0;
    char *p = array;
    if(*p == '-')
    {
        p++;
    }
    while(*p != '\0')       // 遍历字符
    {
        int i = *p-'0';
        if(i>=0 && i<=9)    // 判断字符的有效性,可能出现字母
        {
            result = result*10 + i;
        }
        p++;                // 指针后移 
    }
    if(*array == '-')
    {
        result = -result;
    }
    return result;
}

/*整数转换为字符串*/
void myItoa(int n, char *array)
{
    int num = n;
    char *p = array;
    if(num < 0)     // 负数处理 
    {
        num = -num;
        *p++ = '-';
    }
    do              // 用do-while是为了处理出现0 的情况 
    {
        *p++ = '0'+num%10;
        num = num/10;
    }while(num);
    *p = '\0';
    int i=0, len = strlen(array);
    if(n<0)
    {
        i=1;
        len++;
    }
    for( ; i<len/2; i++)    // 倒置字符串 
    {
        char ch = array[i];
        array[i] = array[len-i-1];
        array[len-i-1] = ch;
    }
}

int main(void)
{
    char str[10] = "-1234";
    int r = myAtoi(str);
    printf("%d\n", r);

    myItoa(9876, str);
    printf("%s\n", str);
    return EXIT_SUCCESS;
}

运行结果
这里写图片描述

编译环境:Dev-C++

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值