前言
最近做到题目涉及数据类型的转换,查了很多资料,发现博客上的文章在此方面不全面,特别是在整型转成字符型上提供的方法不太好(指比较复杂),因此想做个总结。此方法主要涉及atoi,itoa和sprintf函数。
头文件
#include<stdio.h>
#include<stdlib.h>
整型转字符型
主要提供2种方法。
方法1:利用+‘0’将单个数字转字符
代码演示
#include<stdio.h>
int i;
int main()
{
int a=1023034;char b[20];
int c=a;
while(a!=0)//求出数字位数
{
a/=10;i++;
}
while(i--)//用+'0'把0~9的数字转成对应的字符
{
b[i]=c%10+'0';
c/=10;
}
printf("%s",b);
}
效果
![](https://img-blog.csdnimg.cn/img_convert/7ad87847276f113d662454eca99066ea.png)
方法2:利用itoa函数
itoa用法
char*iota(int a,char*s,int system)
a表示需要转换的数
s表示接收的字符串
system代表a的进制
返回值是转化后的字符串的指针,其可有可无
代码演示
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i=23892010;char a[100] ;
itoa(i, a,10);
printf("%s", a);
}
效果
![](https://img-blog.csdnimg.cn/img_convert/0ce9b1f67a117b6136925a05ebb2bbc9.png)
方法3:利用sprintf函数
sprintf用法
int sprintf(char*s," ",int a)
s表示接收的字符串
a表示需要转化的数字
返回值是写入的字符个数,可有可无
代码演示
#include<stdio.h>
int main(){
int a=1324828;
char s[100];
sprintf(s,"%d",a);
printf("%s",s);
}
![](https://img-blog.csdnimg.cn/img_convert/4c2c56a24bb6f4ea71cbe54b9e277cda.png)
字符型转整型
方法1:利用-‘0’直接转换
代码演示
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i=0,b=0;char a[100]={"238566010"};
while(a[i]!='\0'){
b=b*10+a[i]-'0';
i++;
}
printf("%d", b);
}
效果
![](https://img-blog.csdnimg.cn/img_convert/d63ba86c172529e7f0b873251ce6cf4d.png)
方法2:利用atoi函数
atoi用法
atoi能将字符串转换成int类型
int atoi(char*s)
s表示需要转化的字符串
返回值为转换后的int类型
代码演示
#include<stdio.h>
#include<stdlib.h>
int main()
{
char a[10]="223932";
int b=atoi(a);
printf("%d",b);
}
效果
![](https://img-blog.csdnimg.cn/img_convert/c57410b9f9574aa007ee74627f108f26.png)
结语
有这么多种方法,相信你一定更加深入地掌握了这一类的转换!如果有所帮助,不妨给个三连!谢谢!