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函数的使用时该函数最简单的功能之一,感兴趣可以查阅资料完善知识。
C语言 字符串与整数的相互转换(atoi/atol/sprintf函数简解)相关推荐
- C语言字符串转换为整数(附完整源码)
C语言字符串转换为整数 C语言字符串转换为整数完整源码 C语言字符串转换为整数完整源码 #include <assert.h> #include <stdio.h> #incl ...
- C语言--字符串和数字的相互转换
1.数字转换为字符串 sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出. sprintf 是个变参函数,定义如下: int s ...
- 力扣——字符串转换整数(atoi)
请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之 ...
- Java中字符串与整数的相互转换
一.整数转字符串 1.String.valueOf() 此方法可以将Integer和int类型的转为String类型的 int num = 8;String str = String.valueOf( ...
- c语言中用来指示文件缓冲区中具体读写位置,C语言文件读写操作中缓冲区问题和setbuf函数详解...
清除和设置文件缓冲区 (1).清除文件缓冲区函数: int fflush(FILE *stream); int flushall(); fflush()函数将清除由stream指向的文件缓冲区里的内容 ...
- C语言的sprintf()函数详解。
目录 1. 用于格式化字符串 2. 字符串的拼接 3. 数字转换成字符串 头文件:#include <stdio.h> sprintf()函数用于将格式化的数据写入字符串. int spr ...
- 字符串转换整数(atoi)Python解法
请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数). 函数 myAtoi(string s) 的算法如下: ...
- C语言字符串转换为整数
为下面这个函数原型编写函数定义: int ascii_to_integer(char *string); 这个字符串参数必须包含一个或多个数字,函数应该把这些数字字符转换为整数并返回这个整数,如果字符 ...
- C语言 -- 字符串和十六进制的相互转换方式
C语言的字符串操作并不像java,Csharp那样提供直接的方法,简单粗暴.所以,在转换的时候往往费力费时,近日做项目正好用到和java程序通讯,java发送过来的数据是十六进制数字组成的字符串,解析 ...
最新文章
- 最近面试一个6年 Java程序员,一个问题都答不上!
- 服务器断电重启修复,WIN取消100M隐藏分区、异常断电后绕过修复模式
- Performance comparison Raw device VS Ext2 VS Ext3 VS OCFS
- 《研磨设计模式》chap11 代理proxy模式
- UVAlive 7041 The Problem to Slow Down You(回文树)
- LINK : fatal error LNK1104: cannot open file mfc42d.lib
- 2019.01.28【NOIP普及组】模拟赛C组总结
- C++学习之路 | PTA乙级—— 1028 人口普查 (20 分)(精简)
- Jquery .net MVC
- loop在python中什么意思_在python中使用loop打开多个文件
- 网摘Android调用WebService
- [2018.11.05 T3] 零食
- 微信小程序分享至朋友圈功能
- JavaFx笔记二:布局
- Sass-5【颜色函数、透明度函数、@规则】
- A Deep Learning-Based Remaining Useful Life Prediction Approach for Bearings 基于深度学习的轴承剩余寿命预测
- android 验证邮箱格式,android开发中, 如何验证邮箱的格式 ?
- 小白记录:1、scrapy的基础操作
- Oracle中的各种NAME
- mysql怎么创建库和创建表?