wsprintf将我限制为1024个字符?

时间:2016-01-01 08:29:35

标签: c winapi

根据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的限制?

2 个答案:

答案 0 :(得分:3)

您可以使用标准功能snprintfswprintf。他们没有这样的限制:

char output[4096];
int length = snprintf(output, sizeof output, "%02000d", 1);
 // should print 2000 zeros:
printf("length=%d output=%s\n", length, output);

swprintfwchar_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)。