文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>字符串输出形式(sprintf)

字符串输出形式(sprintf)

时间:2010-11-09  来源:dlczh

以前用的比较多的就是prinft,在做appli应用开发的时候,碰到很多情况需要将字符串显示在指定的位置上,而不仅仅是光显示在标准输入输出。
参考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)){
606 case ' ': /* (space) */
607 *tp++ = ' ';
608 break;
609 case 'Y': /* 4峰钳 */
610 tp += sprintf(tp,"%4d",timenow->tm_year + 1900);
611 if(*(opt_str+i+1) == 'Y' || *(opt_str+i+1) == 'L' || *(opt_str+i+1) == 'D' || *(opt_str+i+1) == 'y'){
612 if(APL_ENV_IsDateSeparationMark()) *tp++ = '.';
613 else *tp++ = '/';
614 }
615 break;
616 case 'y': /* 2峰钳 */
617 tp += sprintf(tp,"%02d",(timenow->tm_year + 1900)%100);
618 if(*(opt_str+i+1) == 'Y' || *(opt_str+i+1) == 'L' || *(opt_str+i+1) == 'D' || *(opt_str+i+1) == 'y'){
619 if(APL_ENV_IsDateSeparationMark()) *tp++ = '.';
620 else *tp++ = '/';
621 }
622 break;


其中的这一句
tp += sprintf(tp,"%4d",timenow->tm_year + 1900);
就是利用了sprintf的返回值,将系统时间的年信息以4为整形数据的形式打印到指针类型的tp中,
然后tp加上sprintf的返回值,也就是加上这次打印的字符的个数,即将tp指向了字符串的尾部,以为下一次的继续打印做准备。




相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载