printf以及各种变种
int printf(char *format, [argument]); 其向终端(显示器、控制台等)输出字符
int fprintf(FILE*stream, const char*format, [argument]); 传送格式化输出到一个文件中
int sprintf( char *buffer, const char *format, [ argument] … ); 危险!把格式化的数据写入某个字符串缓冲区。 如果buffer太小,容易溢出,导致程序奔溃。
int snprintf(char *str, size_t size, const char *format, ...); 将可变个参数(...)按照format格式化成字符串,然后将其复制到str中,长度最多size-1, str末尾自动添加\0。
v打头的vxprintf,跟原函数功能类似
int vprintf(char *format, va_list param); 用一个参数取代了变长参数表,且此参数通过调用va_start宏进行初始化
变参的原理在于利用了参数在stack的分布
va_start(argptr,fmt); #define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) ) 其实就是实现了C语言下的不确定参数功能
cnt=vprintf(fmt,argptr);
va_end(argptr); #define va_end(ap) ( ap = (va_list)0 ) // 将指针置为无效
printf以及各种变种的更多相关文章
- 从C中变化过来的各种语言的printf输出格式
在c.php和shell中经常可以碰到printf的使用,特别是在php中printf的相关变种有好几个:print.printf.sprintf.vprintf.vsprintf 在这些语言 ...
- 宽字符wchar_t和窄字符char——putwchar、wprintf
宽字符wchar_t 与 窄字符char 先说下窄字符char,这个大部分读者应该很清楚,char类型的变量占一个字节(byte)(也就是8个bit(比特)),能表示256个字符,那char的范围有两 ...
- 48. 二叉树两结点的最低共同父结点(3种变种情况)[Get lowest common ancestor of binary tree]
[题目] 输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点. 二叉树的结点定义如下: C++ Code 123456 struct BinaryTreeNode { int ...
- poj 1797 Heavy Transportation(最短路变种2,连通图的最小边)
题目 改动见下,请自行画图理解 具体细节也请看下面的代码: 这个花了300多ms #define _CRT_SECURE_NO_WARNINGS #include<string.h> #i ...
- poj 2253 Frogger (最短路变种,连通图的最长边)
题目 这里的dijsktra的变种代码是我看着自己打的,终于把代码和做法思路联系上了,也就是理解了算法——看来手跟着画一遍真的有助于理解. #define _CRT_SECURE_NO_WARNING ...
- dij算法为什么不能处理负权,以及dij算法变种
对于上面那张图,是可以用dij算法求解出正确答案,但那只是巧合而已. 我们再看看下面这张图. dist[4] 是不会被正确计算的. 因为dij算法认为从队列出来的点,(假设为u)肯定是已经求出最短路的 ...
- 对LCS算法及其变种的初步研究
LCS的全称为Longest Common Subsequence,用于查找两个字符串中的最大公共子序列,这里需要注意区分子序列与子串,所谓子序列,指的是从前到后,可以跳跃元素筛选,而字串则必须连续筛 ...
- printf家族探秘
有一个函数,是我们从学习c语言就开始的第一天就接触的,那就是printf函数,可是这个家族的函数,带给我们的便利却不是一点半点,所以写一篇用法总结. 1.printf函数 格式化输出,可以输出八进制, ...
- hrbustoj 1318:蛋疼的蚂蚁(计算几何,凸包变种,叉积应用)
蛋疼的蚂蚁 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 39(22 users) Total Accepted: 26 ...
随机推荐
- python学习笔记:第20天 多继承、MRO C3算法
目录 一.多继承 二.旧式类的MRO 三.新式类的MRO 四.super 一.多继承 之前已经学习过了继承,当出现了x是⼀种y的的时候,就可以使⽤继承关系,即"is-a" 关系.在 ...
- 《PHP框架Laravel学习》系列分享专栏
<PHP框架Laravel学习>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201735.html 文章 Laravel教程:l ...
- Java两个线程实现交替运行-以交替打印奇偶数为例
本文旨在两个线程交替运行,不多哔哔直接看代码吧 public class Work2 { static final Object object = new Object(); public stati ...
- linux——制作本地yum源
1. 将windows系统中的linux镜像插入到linux系统的光驱中 2. 将光驱挂载到一个挂载点 3. 清缓存:yum clean all 4. 修改配置文件 /etc/yum.repos.d/ ...
- SAS中的宏语言
一.sas 宏变量 1) 宏变量属于SAS宏语言,与普通变量的区别是可以独立于DATA步 2) 可以再SAS程序中除数据行之外的任何地方定义并使用宏变量 3) %let语句定义宏变量并分配一个值给宏变 ...
- java 获取目标时间到当前时间中间的月份和每月最大时间
话不多说自己上代码: Date firstDate = DateUtil.formate("2018-01-01", "yyyy-MM-dd"); Date c ...
- break和continue使用
前面讲的循环,这里就是控制循环的东西 break其实在我们学习switch判断的时候就是用到了 break:代表跳出整个循环 continue和break的用法差不多 continue:代表只跳出当前 ...
- Aop实现拦截方法参数
对于spring框架来说,最重要的两大特性就是AOP 和IOC. 以前一直都知道有这两个东西,在平时做的项目中也常常会涉及到这两块,像spring的事务管理什么的,在看了些源码后,才知道原来事务管理也 ...
- 手机蓝牙APP扫描设备的时候异常断开(未完成)
1.手机蓝牙APP打开立马就出现异常,测试在公司有这个问题,在宿舍没这个问题,怀疑是公司设备太多,导致扫描空间不够,或者扫描到奇怪的设备.数组越界之类,明天用log看一下 2. 看样子出了一个erro ...
- 基于Docker的UI自动化初探
本文来自网易云社区 前言 一直以来,项目迭代的时间都是比较紧张的,开发加班加点coding,测试加班加点提bug.都说"时间像海绵里的水,挤挤总会有的"(当然这里的"挤挤 ...