300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > C语言 字符串与整数的相互转换(atoi/atol/sprintf函数简解)

C语言 字符串与整数的相互转换(atoi/atol/sprintf函数简解)

时间:2018-10-08 02:54:15

相关推荐

C语言  字符串与整数的相互转换(atoi/atol/sprintf函数简解)

字符串转化为整数

atoi函数与atol函数

atol函数是将字符串转化为整形,atol函数是将字符串转化为长整型

注意:其实他们没什么区别。

int main(){printf("sizeof(int)=%d", sizeof(int));printf("sizeof(long)=%d", sizeof(long));return 0;/*运行结果:sizeof(int)=4sizeof(long)=4*/}

由于int和long的字节长度都是4,也就是32位,那么它们的取值范围都是-2147483648 ~ 2147483647(-2 ^ 31 ~ 2 ^ 31-1),如果字符串转化为整数后超出了范围,则会高位截取,从而转化失败。

介绍函数:以atoi为例

int main(){int a;char* b = "123";a = atoi(b);printf("a = %d", a);//结果:a = 123 正常输出return 0;}int main(){int a;char* b = " 123";//开头加一个空格a = atoi(b);printf("a = %d", a);//结果:a = 123 正常输出return 0;}int main(){int a;char* b = "12 3";//中间加一个空格a = atoi(b);printf("a = %d", a);//结果:a = 12return 0;}int main(){int a;char* b = "a123";//开头加一个aa = atoi(b);printf("a = %d", a);//结果:a = 0 return 0;}int main(){int a;char* b = "123a";//末尾加一个aa = atoi(b);printf("a = %d", a);//结果:a = 123 正常输出 return 0;}int main(){int a,b;char* c = "-123";char* d = "+123";a = atoi(c);b = atoi(d);printf("a = %d b = %d", a,b);//结果:a = -123 b = 123 正常输出 return 0;}int main(){int a;char* b = "12345678987654321";//超出范围的数a = atoi(b);printf("a = %d", a);//结果:a = 2147483647 高位截取return 0;}

总结:在atoi函数中,转化从出现的第一个数字或"+"、"-“开始,直到非法字符或者空格出现结束,除”+"、"-"和数字以外都是非法字符,非法字符不能出现在字符串开头,否则返回0;出现在末尾则自动过滤掉;超出范围则高位截取。atol函数与atoi函数一致,不作叙述。

整数转化为字符串

sprintf函数

sprintf与printf函数只差了一个字母s,不难猜出它们的功能是类似的:printf是输出到屏幕上面,而sprintf是输出到字符串中。当然printf的格式化数据在sprintf中也能使用,我们用sprintf函数实现整数转化为字符串(即整数输出到字符串中,这只涉及到sprintf函数的简单应用)

int main(){char a[10];int b = 123;sprintf(a,"%d",b);printf("a = %s", a); //运行结果:a = 123return 0;}int main(){char a[10];int b = 123;sprintf(a,"%2d",b);//这里我们用格式化取位数小于实际长度printf("a = %s", a); //运行结果:a = 123 实际长度大于格式化位数则直接输出实际长度return 0;}int main(){char a[10];int b = 123;sprintf(a,"%4d",b);//这里我们用格式化取位数大于实际长度printf("a = |%s|", a); //运行结果:a = | 123| 实际长度小于格式化长度则右对齐return 0;}int main(){char a[10];int b = 12345678901;//这里我们定义11位的整数sprintf(a,"%d",b);printf("a = |%s|", a);//运行结果:Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.return 0;}

总结:sprintf函数将第三个参数的数据通过中间格式化后输出到第一个参数的字符串中去,格式化类型同printf相同,输入长度大于字符串长度时,报错。

总结:atoi与atol函数很好理解,功能简单;但这里的sprintf函数的使用时该函数最简单的功能之一,感兴趣可以查阅资料完善知识。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。