news 2026/7/5 1:27:36

用C语言的<wchar.h>宽字节库实现好玩的逐字输出效果(模拟打字)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用C语言的<wchar.h>宽字节库实现好玩的逐字输出效果(模拟打字)

笔者闲来无聊,遂突发奇想试试用C语言实现逐字输出的效果,接下来讲解实现方法

(震惊!!!中日英三语可以混着写且正确统计字符数)

其实是使用了宽字节库wchar.h

#include <stdio.h> #include <wchar.h> #include <locale.h> //本地化库 int main() { setlocale(LC_ALL, ""); //使用系统默认本地化 wchar_t str[] ={ L"Hello你好我是人我来自地球おはようございます先輩"}; int len=wcslen(str); wprintf(L"%ls\n", str); printf("%d",len); return 0; }

我这里使用的是gcc编译器,编译时使用命令:

gcc -finput-charset=UTF-8 -fexec-charset=GBK -o main main.c

然后.\main运行程序,结果如下

可以看到输出结果和字符数都是正确的

然后,又因为Windows.h库的Sleep函数可以实现延时效果

所以我们可以开始搞事情了:

#include <stdio.h> #include <wchar.h> #include <locale.h> #include <windows.h> //首先实现一个间隔逐字输出字符的函数 /* *params: *lines[]:一个宽字节字符串二维数组 *lines_len:要输出的行数 *delay_time:要间隔的时间(ms) */ void printLines(wchar_t *lines[], int lines_len, int delay_time) { int line_len = 6, i = 0; setlocale(LC_ALL, ""); //本地化 for (int line = 0; line < lines_len; line++) //先一行一行读取 { wchar_t *currentline = lines[line]; //存放当前行 wchar_t s[256] = L""; //存放已经读取的字符 int len = wcslen(currentline); //获得当前按行的字符数 int display_len = 0; //指向输出字符串的各个字符位置的指针 for (i = 0; i < len; i++) { s[display_len] = currentline[i]; display_len++; s[display_len] = L'\0'; wprintf(L"\r%ls", s); //输出字符串 Sleep(delay_time); } } } //主函数 int main(){ //定于一个宽字节字符串二维数组 wchar_t *wstr[]={ L"未熟 無ジョウ されど 美しくあれ\n", //若要换行则在句尾加上换行符 L"No Destiny ふさわしく無い\n", L"こんなんじゃきっと物足りない\n", L"くらい語っとけばうまくいく\n", L"物、金、愛、言、もう自己顕示飽きた" }; //调用函数 printLines(wstr,5,150); return 0; }

接下来看看运行效果

运行效果

————————————END————————————

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 1:27:35

鸿蒙新特性——Badge 徽章组件详解

一、引言 在移动应用界面中&#xff0c;角标/徽章&#xff08;Badge&#xff09;是一个小但无处不在的 UI 元素。社交 App 的消息列表上那个红色的未读数字、购物 App 底部 Tab 栏上购物车的商品数量角标、邮件客户端的收件箱未读计数、系统通知栏的应用角标——它们都以一个微…

作者头像 李华
网站建设 2026/7/5 1:26:39

Linux 用户管理知识与应用实践(二:用户相关命令与示例)

Linux 用户管理知识与应用实践 本章将深入讲解用户管理的知识&#xff0c;并带领小伙伴们实践 Linux 运维中有关用户管理的工作。 三、添加用户命令 useradd 1、useradd 命令的工作原理 Linux 系统中添加用户的命令有 useradd 和 adduser&#xff0c;这两个命令的功能是一样的。…

作者头像 李华
网站建设 2026/7/5 1:24:32

远控横评:向日葵、ToDesk、UU 远程,远程玩游戏差距有多大

今天不拉表、不搞数据堆砌&#xff0c;纯粹以一个游戏玩家的视角&#xff0c;聊聊这三款软件的免费版用下来到底是什么感受。一、画质与帧率UU远程免费版直接开放4K144帧&#xff0c;色彩采样4:4:4&#xff0c;文字锐利、色彩准。实测跑游戏时远景建模、水面光影都能看清&#…

作者头像 李华
网站建设 2026/7/5 1:24:15

Transformers自动化训练全流程优化实战

1. 项目概述&#xff1a;Transformers自动化加载训练全流程解析 这个项目本质上是一个面向AI工程师的实战指南&#xff0c;重点解决NLP/CV领域使用Transformers框架时的三大痛点&#xff1a;数据预处理标准化、自动化训练流程构建、分布式训练优化。我在实际工业级项目中发现&a…

作者头像 李华
网站建设 2026/7/5 1:22:35

助睿实验7-3:可视化探索

实验7-3&#xff1a;可视化探索4.1 分析框架由于数据特点为内容同质化、平台固定、标题是主要差异来源&#xff0c;因此分析聚焦于5个维度&#xff1a;核心指标&#xff1a;整体表现如何&#xff1f;排名分析&#xff1a;谁做得好&#xff1f;什么内容做得好&#xff1f;标题影…

作者头像 李华