当前位置: 首页 > news >正文

用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————————————

http://www.cnnetsun.cn/news/3148649.html

相关文章:

  • 鸿蒙新特性——Badge 徽章组件详解
  • Linux 用户管理知识与应用实践(二:用户相关命令与示例)
  • 高速 ADC 与 FPGA LVDS 接口设计:5 项 PCB 布线规则与 IDELAY 时序校准实战
  • 远控横评:向日葵、ToDesk、UU 远程,远程玩游戏差距有多大
  • Transformers自动化训练全流程优化实战
  • 助睿实验7-3:可视化探索
  • 基于51单片机的教室智能照明灯控制系统光控人数检测定做定制电子13(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • kotlin-basic-blog
  • 89个公共Tracker如何让BT下载告别“孤岛困境“?
  • 剧云推出分镜大师:让剧本更快变成可拍摄的镜头方案
  • Deceive:终极游戏隐身指南 - 如何在英雄联盟、VALORANT和符文大地传说中保持隐身状态
  • 《鸿蒙原生应用从0-1构建:项目工程结构与核心配置全景解析》
  • ExplorerPatcher深度解析:重塑Windows界面体验的高效工具
  • Node.js 插件沙箱:开放扩展之前先限制能力
  • Go 泛型的运行时性能:单态化、接口装箱与编译器优化的基准分析
  • OBS美颜文章_终极指南
  • 别再手写Bug了!用Python+LangGraph实现AI自修复代码的完整指南
  • AI机器学习高级数学与优化
  • SSTI攻击链构造手册(带WAF绕过)
  • 创客指南:oDrive X2212电机从零到闭环的完整配置流程
  • 2026外贸获客渠道全面洗牌:AI正在重新分配全球流量,你的品牌在答案里吗?
  • 香农公式极限推导
  • R语言多分类Logistic回归变量筛选实战:最优子集与逐步回归
  • 【硬件+APP+云平台】9.智能洗衣系统-WiFi-基于STM32嵌入式物联网单片机软硬件毕业生系统设计
  • 2026免费好用的去水印软件推荐:电脑手机在线工具优缺点对比
  • 题解:洛谷 B4554 [GESP202606 二级] 菱形
  • 基于EGEUNet的烟叶病害智能识别系统设计与实现
  • 如何免费下载国家中小学智慧教育平台电子课本PDF:完整指南
  • LSTM 超参数网格搜索:记忆单元、批次大小与 Dropout 的 3 维对比实验
  • Java毕业设计-基于 JavaWeb 的美容美发管理系统的设计与实现 美容院会员消费预约管理系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)