字符串输出形式(sprintf)
时间:2010-11-09 来源:dlczh
参考manpage printf可以看到除了printf外,还有
#include <stdio.h>
int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...);
等等,这里只讲讲开发中用到的sprintf。
int sprintf(char *str, const char *format, ...);
printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的
格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终
函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。
利用sprintf 的返回值
较少有人注意printf/sprintf 函数的返回值,但有时它却是有用的,spritnf 返回了本次函数调用最终打印到字符缓冲区中的字符数目。也就是说每当一次sprinf 调用结束以后,你无须再调用一次
strlen 便已经知道了结果字符串的长度
605 switch(*(opt_str+i)){ |
其中的这一句
tp += sprintf(tp,"%4d",timenow->tm_year + 1900);
就是利用了sprintf的返回值,将系统时间的年信息以4为整形数据的形式打印到指针类型的tp中,
然后tp加上sprintf的返回值,也就是加上这次打印的字符的个数,即将tp指向了字符串的尾部,以为下一次的继续打印做准备。