根据wsprintf
的文档,它将输出缓冲区限制为1024字节。如果我需要存储的文本大于1024字节怎么办?我怎样才能扩展这个限制,或者我可以选择使用不需要使用lstrcat或类似内容的替代方案?
char output[4096];
wsprintf(output, "%s", input); // assume input is a piece of text > 1024 characters
printf(output); // only prints the first 1024 characters
如何将输入中的所有字符复制到输出中,超过1024字节wsprintf
的限制?
答案 0 :(得分:3)
您可以使用标准功能snprintf
和swprintf
。他们没有这样的限制:
char output[4096];
int length = snprintf(output, sizeof output, "%02000d", 1);
// should print 2000 zeros:
printf("length=%d output=%s\n", length, output);
swprintf
是wchar_t
的等效函数:
wchar_t output[4096];
int length = swprintf(output, sizeof output / sizeof *output, "%02000d", 1);
// should print 2000 zeros:
printf("length=%d output=%Ls\n", length, output);
答案 1 :(得分:2)
wsprintf()
已弃用。请改用Strsafe functions之一(StringCbPrintf/Ex()
或StringCchPrintf/Ex()
)。它们支持最大为2,147,483,647个字符的输出缓冲区(STRSAFE_MAX_CCH
)。