sprintf用法(转)
来源:互联网 发布:crossover mac 下载 编辑:程序博客网 时间:2024/04/30 00:18
sprintf用法(转)
printf可能是许多程序员在开始学习C语言时接触到的第二个函数(我猜第一个是main),说起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf了解多吗?在将各种类型的数据构造成字符串时,sprintf的强大功能很少会让你失望。
//把整数123打印成一个字符串保存在s中。
sprintf(s, "%d", 123); //产生"123"
sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567"
sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567"
sprintf(s, "%8x", 4567); //小写16进制,宽度占8个位置,右对齐
sprintf(s, "%-8X", 4568); //大写16进制,宽度占8个位置,左对齐
sprintf(s, "%08X", 4567); //产生:"000011D7"
short si = -1;
sprintf(s, "%04X", si);
sprintf(s, "%04X", (unsigned short)si);
unsigned short si = -1;
sprintf(s, "%04X", si);
sprintf(s, "%f", 3.1415926); //产生"3.141593"
sprintf(s, "%10.3f", 3.1415626); //产生:" 3.142"
sprintf(s, "%-10.3f", 3.1415626); //产生:"3.142 "
sprintf(s, "%.3f", 3.1415626); //不指定总宽度,产生:"3.142"
int i = 100;
sprintf(s, "%.2f", i);
sprintf(s, "%.2f", (double)i);
for(int i = 32; i < 127; i++) {
printf("[ %c ]: %3d 0x%#04X/n", i, i, i);
}
char* who = "I";
char* whom = "CSDN";
sprintf(s, "%s love %s.", who, whom); //产生:"I love CSDN. "
char a1[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
char a2[] = {'H', 'I', 'J', 'K', 'L', 'M', 'N'};
sprintf(s, "%s%s", a1, a2); //Don't do that!
sprintf(s, "%7s%7s", a1, a2);
sprintf(s, "%.7s%.7s", a1, a2);//产生:"ABCDEFGHIJKLMN"
sprintf(s, "%.6s%.5s", a1, a2);//产生:"ABCDEFHIJKL"
sprintf(s, "%.*s%.*s", 7, a1, 7, a2);
sprintf(s, "%.*s%.*s", sizeof(a1), a1, sizeof(a2), a2);
sprintf(s, "%-*d", 4, 'A'); //产生"65 "
sprintf(s, "%#0*X", 8, 128); //产生"0X000080","#"产生0X
sprintf(s, "%*.*f", 10, 2, 3.1415926); //产生" 3.14"
sprintf(s, "%u", &i);
sprintf(s, "%08X", &i);
sprintf(s, "%p", &i);
我觉得它实际上就相当于:
sprintf(s, "%0*x", 2 * sizeof(void *), &i);
int len = sprintf(s, "%d", i);
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main() {
srand(time(0));
char s[64];
int offset = 0;
for(int i = 0; i < 10; i++) {
offset += sprintf(s + offset, "%d,", rand() % 100);
}
s[offset - 1] = '/n';//将最后一个逗号换成换行符。
printf(s);
return 0;
}
time_t t = time(0);
//产生"YYYY-MM-DD hh:mm:ss"格式的字符串。
char s[32];
strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", localtime(&t));
①获取System时间: void GetSystemTime(LPSYSTEMTIME lpSystemTime); 下面是例子:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
void main() {
SYSTEMTIME st; //定义存放时间的结构体
char strTime[256];
int n=0;
GetSystemTime(&st);
n = sprintf(strTime,"Year:/t%d/n",st.wYear);
n += sprintf(strTime+n,"Month:/t%d/n",st.wMonth);
n += sprintf(strTime+n,"Day:/t%d/n",st.wDay);
n += sprintf(strTime+n,"Date:/t%d/n",st.wDayOfWeek);
n += sprintf(strTime+n,"Hour:/t%d/n",st.wHour);
n += sprintf(strTime+n,"Minute:/t%d/n",st.wMinute);
n += sprintf(strTime+n,"Second:/t%d/n",st.wSecond);
n += sprintf(strTime+n,"MilliSecond:/t%d/n",st.wMilliseconds);
printf("%s",strTime);
system("pause");
}
******************************************
参数个数一样多, 各参数之间用","分开, 且顺序一一对应, 否则将会出现意想
不到的错误。
1. 格式化规定符
Turbo C2.0提供的格式化规定符如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━
符号 作用
──────────────────────────
%d 十进制有符号整数
%u 十进制无符号整数
%f 浮点数
%s 字符串
%c 单个字符
%p 指针的值
%e 指数形式的浮点数
%x, %X 无符号以十六进制表示的整数
%0 无符号以八进制表示的整数
%g 自动选择合适的表示法
━━━━━━━━━━━━━━━━━━━━━━━━━━
说明:
(1). 可以在"%"和字母之间插进数字表示最大场宽。
例如: %3d 表示输出3位整型数, 不够3位右对齐。
%9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6,
小数点占一位, 不够9位右对齐。
%8s 表示输出8个字符的字符串, 不够8个字符右对齐。
如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。
但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出;
若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。
另外, 若想在输出值前加一些0, 就应在场宽项前加个0。
例如: %04d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度
为4位。
如果用浮点数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度,
小数点前的数字代表最小宽度。
例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则
第9个字符以后的内容将被删除。
(2). 可以在"%"和字母之间加小写字母l, 表示输出的是长型数。
例如: %ld 表示输出long整数
%lf 表示输出double浮点数
(3). 可以控制输出左对齐或右对齐, 即在"%"和字母之间加入一个"-" 号可
说明输出为左对齐, 否则为右对齐。
例如: %-7d 表示输出7位整数左对齐
%-10s 表示输出10个字符左对齐
2. 一些特殊规定字符
━━━━━━━━━━━━━━━━━━━━━━━━━━
字符 作用
──────────────────────────
/n 换行
/f 清屏并换页
/r 回车
/t Tab符
/xhh 表示一个ASCII码用16进表示,
其中hh是1到2个16进制数
━━━━━━━━━━━━━━━━━━━━━━━━━━
- sprintf用法(转)
- sprintf用法(转)
- sprintf用法(转)
- sprintf,sscanf的用法(转)
- [转]sprintf函数用法详解
- sprintf()函数的用法
- sprintf()函数的用法
- sprintf()函数的用法
- sprintf用法
- sprintf用法
- sprintf用法
- sprintf用法
- sprintf用法
- sprintf用法
- sprintf用法
- sprintf 用法
- sprintf用法
- sprintf()用法
- Tomcat的问题终于被我解决了
- 《动态网页制作》课程教学笔记(1)
- 1.20e 的maphack
- 记录一些东西
- Petri网简介
- sprintf用法(转)
- smartd进程是什么?他在开机启动不了的解决方法!
- 思维与智慧
- Linux下安装Oracle时,出现无法配置网络的问题
- ASP.NET性能优化的方法总结
- 关于医网联影像工作站3.0(ProDicom Workstation 3.0)的版权及注册问题说明
- Virtual PC 2007中文版下载
- 抒发情感 留念
- 3/20股票操作总结&下周走势预测