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

发布时间:2026/7/5 1:27:40

用C语言的<wchar.h>宽字节库实现好玩的逐字输出效果(模拟打字) 笔者闲来无聊遂突发奇想试试用C语言实现逐字输出的效果接下来讲解实现方法震惊中日英三语可以混着写且正确统计字符数其实是使用了宽字节库wchar.h#include stdio.h #include wchar.h #include locale.h //本地化库 int main() { setlocale(LC_ALL, ); //使用系统默认本地化 wchar_t str[] { LHello你好我是人我来自地球おはようございます先輩}; int lenwcslen(str); wprintf(L%ls\n, str); printf(%d,len); return 0; }我这里使用的是gcc编译器编译时使用命令gcc -finput-charsetUTF-8 -fexec-charsetGBK -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, //若要换行则在句尾加上换行符 LNo Destiny ふさわしく無い\n, Lこんなんじゃきっと物足りない\n, Lくらい語っとけばうまくいく\n, L物、金、愛、言、もう自己顕示飽きた }; //调用函数 printLines(wstr,5,150); return 0; }接下来看看运行效果运行效果————————————END————————————

相关新闻