整型与字符型之间转化

整数转化为字符串                       


1、可以使用itoa函数(注意,这个函数时在stdlib库中)

char *itoa(int value, char *string, int radix);
      value: 被转换的整数
      string: 转换后储存的字符数组
      radix: 转换进制数,如2,8,10,16 进制等

 

#include <stdio.h>

#include <stdlib>



int main()

{

    int num = 12345;

    char str[7];



    itoa(num,str,10);



    printf("输出:%s",str);

    return 0;

}


2、自定义函数

 

        采用加‘0’,再逆序的方法,整数加‘0’就可以隐性的转化为char型(加减‘0’可以使得在int和char之间转化)

 

char* IntToStr(int num,char* str)

{

    if(NULL == str)

        return NULL;



    int i = 0,j = 0;//注意初始化

    char temp[100];

    while(num){

        temp[i] = num%10 + '0';//一个整数转化成字符型

        num = num /10;

        i++;

    }

    temp[i] = '\0';//字符串结束标志



    i = i - 1;//i返回到temp最后一个有意义的数字

    while(i >= 0){

        str[j] = temp[i];

        j++;

        i--;

        //str[j++] = temp[i--];

    }

    return str;

}


字符串转化为整数                      

 


1、使用非标准C函数atoi

        int atoi(const char *nptr);参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零

 

#include <sddio.h>

#include <stdlib.h>



int main()

{

    char str[] = "12345";

    int num;

    

    num = atoi(str);

    printf("num = %d"num);

    return 0;

}


2、自定义函数

 

 

int StrToInt(char*str)

{

    if(NULL == str)

        return -1;

	

    int res = 0;

    bool flag = false;

    if(str[0] == '-' || str[0] == '+'){

	flag = (*str++ != '+');

    }

    while(*str){

	res = res*10 + (*str++ -'0');

    }

    return flag ? -res : res;

}


 

 

你可能感兴趣的:(字符)