Win32中的wsprintf始终载入1024byte数据

wsprintf在写入数据时,最大的缓冲区为1024个字节,试了很多次,每次都是在一定长度截断我想要输出的字符串,所以才发现了这个问题。
如下:

	char demochar[1026] = "";
	for (int i = 0; i < 1026; i++)
	{
		demochar[i] = '26';
	}
	wsprintf(demochar, "%s",demochar);//用wsprintf转换一次后查看长度
	char ss[50];
	int length = strlen(demochar);
	sprintf(ss, "%d", length);
	MessageBox(NULL,ss,"缓冲区大小 ",NULL);

最后输出结果为:
结果示例
然后切换方法改用sprintf

	char demochar[1026] = "";
	for (int i = 0; i < 1026; i++)
	{
		demochar[i] = '26';
	}
	sprintf(demochar, "%s",demochar);//用sprintf转换一次后查看长度
	char ss[50];
	int length = strlen(demochar);
	sprintf(ss, "%d", length);
	MessageBox(NULL,ss,"缓冲区大小 ",NULL);

结果示例
sprintf是突破了1024缓冲区的限制的
所以最后的解决方法是用sprintf代替wsprintf

猜你喜欢

转载自blog.csdn.net/hu421160052/article/details/88529576