解决C语言wprintf函数无法打印中文的问题

发布时间:2024年01月17日

在Visual Studio中,wchar_t[]字符数组用来存储UTF-16编码的字符串,但C语言库函数wprintf无法打印含有汉字的wchar_t字符串。
解决办法是用WriteConsoleW函数重新实现一个自己的my_wprintf函数。

#include <stdio.h>
#include <Windows.h>

// C语言自带的wprintf函数无法打印中文
// 所以这里重新实现一个能打印中文的my_wprintf函数
int my_wprintf(const wchar_t *format, ...)
{
	int n;
	va_list list;
	wchar_t str[1024];
	DWORD ret;
	HANDLE console;

	va_start(list, format);
	n = _vsnwprintf_s(str, _countof(str), _countof(str) - 1, format, list);
	va_end(list);

	console = GetStdHandle(STD_OUTPUT_HANDLE);
	WriteConsoleW(console, str, (DWORD)wcslen(str), &ret, NULL);
	return n;
}

void main()
{
	wchar_t wstr[] = L"abcd简体中文efgh";

	wprintf(L"wstr=%s, len=%d\n", wstr, (int)wcslen(wstr));
	my_wprintf(L"wstr=%s, len=%d\n", wstr, (int)wcslen(wstr));
}

程序运行结果:

文章来源:https://blog.csdn.net/ZLK1214/article/details/135637964
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。