wsprintf函数格式化并将一系列字符和值存储在缓冲区中。根据格式字符串中的相应格式规范,将任何参数转换并复制到输出缓冲区。该函数向其写入的字符附加一个终止空字符,但返回值不包括字符计数中的终止空字符。
int wsprintf(
LPTSTR 【LPOUT】, | //指向缓冲区的指针用于输出 |
LPCTSTR 【lpFmt】, | //指向format-control字符串的指针 |
... | //可选参数 |
); |
参数
【LPOUT】
指向缓冲区以接收格式化的输出。
【lpFmt】
指向包含格式控制规范的以null结尾的字符串。除了普通ASCII字符外,每个参数的格式说明都会出现在此字符串中。有关格式说明的详细信息,请参阅备注部分。
...
指定一个或多个可选参数。参数参数的数量和类型取决于【lpFmt】参数中相应的格式控制规范。
返回值
如果函数成功,则返回值是存储在输出缓冲区中的字符数,不计算终止空字符。
如果函数失败,则返回值小于format-control字符串的长度。要获取扩展错误信息,请调用GetLastError.
备注
格式控制字符串包含确定【lpFmt】参数后面的参数的输出格式的格式规范。下面讨论的格式规范始终以百分号(%)开头。如果一个百分比符号后跟一个没有意义的字符作为格式字段,则该字符未格式化(例如,%%生成单个百分号字符)。
格式控制字符串从左到右读取。当遇到第一个格式规范(如果有的话)时,会根据格式规范将格式化控制字符串的第一个参数的值转换并复制到输出缓冲区。第二个格式规范导致第二个参数被转换和复制,依此类推。如果比格式规范有更多参数,额外的参数将被忽略。如果所有格式规范中没有足够的参数,则结果未定义。
格式规范具有以下形式:
%[-][#][0][【width】][.【precision】]【类型】
每个字段是单个字符或表示特定格式选项的数字。出现在最后一个可选格式字段之后的【类型】字符确定相关联的参数是否被解释为字符,字符串或数字。最简单的格式规范仅包含百分号和类型字符(例如%s)。可选字段控制格式化的其他方面。以下是可选和必填字段及其含义:
领域 | 含义 |
- | 将输出用空白或零填充到右侧以填充字段宽度,将输出调整到左边。如果省略此字段,则将输出填充到左侧,将其对齐。 |
# | 使用0x(小写)或0X(大写)前缀十六进制值。 |
0 | 用零填充输出值以填充字段宽度。如果省略此字段,则输出值用空格填充。 |
【宽度】 | 将指定的最小字符数复制到输出缓冲区。【宽度】字段是一个非负整数。宽度规范不会导致值被截断;如果输出值中的字符数大于指定的宽度,或者如果不存在【宽度】字段,则会打印符合精度规范的值的所有字符。 |
.【精确】 | 对于数字,将指定的最小位数复制到输出缓冲区。如果参数中的位数小于指定的精度,输出值将在左侧用零填充。当数字数字超过指定精度时,该值不会被截断。如果指定的精度为0或完全省略,或者如果周期(.)出现后没有数字,则精度设置为1。 |
对于字符串,将指定的最大字符数复制到输出缓冲区。 | |
【类型】 | 输出相应的参数作为字符,字符串或数字。此字段可以是以下任何字符序列: |
序列 | 插 |
c | 一个字符wsprintf函数忽略数字值为零的字符参数。当调用应用程序使用#定义 UNICODE编译标志和类型CHAR时,该序列将被解释为类型WCHAR. |
C | 一个字符当调用应用程序使用#定义 UNICODE编译标志和类型WCHAR时,该序列将被解释为类型CHAR. |
d | 一个有符号的十进制整数参数。该序列相当于i序列。 |
hc, hC | 一个字符wsprintf函数忽略数字值为零的字符参数。该序列总是被解释为类型CHAR,即使调用应用程序使用#定义 UNICODE编译标志。 |
hs, hS | 一个字符串。该序列总是被解释为类型LPSTR,即使当调用应用程序使用#定义 UNICODE编译标志时。 |
i | 有符号的十进制整数。该序列相当于d序列。 |
lc, lC | 一个字符wsprintf函数忽略数字值为零的字符参数。即使呼叫应用程序不使用#定义 UNICODE编译标志,该序列总是被解释为类型WCHAR. |
ld | 一个长有符号的十进制整数。该序列相当于li序列。 |
li | 一个长有符号的十进制整数。该序列相当于ld序列。 |
ls, lS | 一个字符串。即使当调用应用程序不使用#定义 UNICODE编译标志时,该序列总是被解释为类型LPWSTR.此序列相当于ws序列。 |
lu | 长无符号整数。 |
lx, lX | 一个长的无符号十六进制整数,小写或大写。 |
s | 一个字符串。当调用应用程序使用#定义 UNICODE编译标志和类型LPSTR时,此序列被解释为类型LPWSTR. |
S | 一个字符串。当调用应用程序使用#定义 UNICODE编译标志和类型LPWSTR时,该序列被解释为类型LPSTR. |
u | 无符号整数参数。 |
x, X | 无符号的十六进制整数,小写或大写。 |
注意与其他Windows功能不同,wsprintf使用C调用约定(_cdecl),而不是Pascal调用约定。因此,调用进程的责任是从栈中弹出参数,参数从右到左被推送到堆栈。在C语言模块中,C编译器执行此任务。
也可以看看