Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C语言中通用字符显示函数的设计

C语言中通用字符显示函数的设计

原创
作者头像
鲁郭大侠
修改于 2020-03-09 03:18:49
修改于 2020-03-09 03:18:49
1.6K0
举报
文章被收录于专栏:高级程序设计高级程序设计

C语言中的屏幕字符输出函数有多个,最常用的有printf、 cprintf 等,其中,printf 是一个基本的输出函数,而 cprintf则带有字符的屏幕显示属性,但需要其他函数的支持。     显示一行文本,应首先知道该文本的各种属性,如Font, Color , BackStyle等。     为方便,可采用一个函数来实现文本的输出: SayText(row, col , font, backstyle, string, … …)     以上的方法对于一个简单的应用是完全可行的,但对于一个系统而言,此种做法则欠妥。     在一个大型的应用系统中,用户可能需要不断的进行文本的数据输出,如果在进行多个文本数据段的输出时,假如其中的文本属性是相同的,则用户是不需要继续设置文本属性的,系统也不应该进行多次的属性设置。      因此,在进行系统设计时,应事先建立一数据结构存储文本属性即文本属性结构,用以存放当前输出文本属性,使用户对于文本属性的操作直接对应于文本属性结构,系统中文本的输出则直接从文本属性结构中获取数据。这样,将文本的输出分解为两部分:文本属性操作及文本内容的输出。    Struct text    {       Int SayColor;       Int GetColor;    }TextProp;     由于在C中,文本的字体及显示背景等在文本方式下采用C提供的函数很难处理,因此我们在定义文本属性时,只定义了文本的显示颜色。 由于文本在进行处理时,有两种方式,一为显示,二为获取,因此定义两种颜色属性。

  一个完整的字符显示函数 #include <string.h> #include <stdio.h> #include <conio.h> #include <dos.h>

#define F_BLACK       0 #define F_BLUE        1 #define F_GREEN      2 #define F_RED         4 #define F_INTENSE     8 #define F_WHITE       15

#define B_BLACK       0 #define B_BLUE        16 #define B_GREEN      32 #define B_RED         64 #define B_INTENSE    128 #define B_WHITE      240

#define MAX    80

struct text {    int SayColor;    int GetColor; };

typedef struct text TextProp;

TextProp pText;

void MoveCursor (int x,int y) {     union REGS regs ;

    regs.h.ah=2 ;    /* set cursor postion */     regs.h.dh=x ;     regs.h.dl=y ;     regs.h.bh=0 ;    /* video page 0 */     int86(0x10,&regs,&regs); }

void SayCharColor(char cc,int color) {     union REGS regs ;     regs.h.ah=9 ;     regs.x.cx=1 ;     regs.h.al=cc ;     regs.h.bl=color ;     regs.h.bh=0 ;     int86(0x10,&regs,&regs); }

void SayStringRowCol(int row,int col,char *str) {     int tLen ;     int tIdx ;     char cc ;

    tLen=strlen(str);     for(tIdx=1;tIdx<=tLen;tIdx++)     {         MoveCursor(row,col+tIdx);         SayCharColor(str[tIdx-1],pText.SayColor);     } }

void SetSayColor(int color) {     pText.SayColor=color ; }

void ClearScreen() {     textattr(pText.SayColor);     clrscr(); }

int main(void) {     SetSayColor(F_RED|F_INTENSE|B_BLUE|B_GREEN|B_INTENSE);     ClearScreen();     SayStringRowCol(15,10,"Hello,World!");     SayStringRowCol(18,10,"你好,世界!");     getch();     return 0 ; }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C语言坦克大战
//里规格:长39*2=78 (真坐标)(假坐标宽为39) 高39
紫禁玄科
2022/03/24
1.1K0
C语言坦克大战
基于控制台的通用文本输出函数设计
#define MaxCharsEachLine 80 /*一行所允许显示的最大字符*/
鲁郭大侠
2020/03/08
6480
C语言俄罗斯方块(新版本完整代码)
旧版800行代码,这个只有500行,并且不闪屏,看着舒服。废话不多说,上图,上代码。
花狗Fdog
2020/10/28
8.9K1
C语言俄罗斯方块(新版本完整代码)
花狗C语言彩色贪吃蛇(完整代码)
这是我在博客写的第一篇文章,如果哪里有问题还请多多指教!!以前我写的贪吃蛇是全图刷新的,导致在窗口运行时,眼睛都快闪瞎了!今天为大家带来了不闪的贪吃蛇!!!废话不多说,上图,上代码!!
花狗Fdog
2020/10/28
2.4K0
花狗C语言彩色贪吃蛇(完整代码)
C语言函数大全--i开头的函数
从指定 I/O 端口读取到的 16 位数据。若读取过程中出现错误,返回值的具体情况可能因系统和硬件而异。
huazie
2025/04/20
1260
C语言函数大全--i开头的函数
QTableView + QStandardItemModel模式显示表格冻结列(模板)
QTableView 是 Qt 框架中一个用于显示和编辑表格数据的控件。它提供了一个灵活的界面,允许用户通过行和列来浏览和修改数据。QTableView 支持多种数据模型,如 QAbstractItemModel,并且可以与模型一起使用,以提供数据视图。此外,QTableView 还提供了排序、筛选和分组等功能,以满足不同的需求。
Qt历险记
2024/07/29
7330
QTableView + QStandardItemModel模式显示表格冻结列(模板)
【C语言】《C语言基础指南!》- 史上最全!
C语言由丹尼斯·里奇(Dennis Ritchie)在1972年开发,用于操作系统和系统级软件的开发。它是由B语言发展而来,成为Unix操作系统的核心语言。
LuckiBit
2024/12/11
6260
C语言函数大全--g开头的函数(上)
上述代码是一个简单的图形程序,使用了图形库函数 arc 来绘制一个弧线并显示其起始和结束点的坐标。
huazie
2025/01/22
1770
C语言函数大全--g开头的函数(上)
Android-打造一个简单通用的Material加载LoadingView
因为网络请求的时间一般是未知的,所以我们一般都是用一个循环的圆圈指示器来提示用户,如下图。
三好码农
2018/09/11
3K0
Android-打造一个简单通用的Material加载LoadingView
【C语言 】自定义数据类型(二)
像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所 以联合体也叫:共⽤体
用户11375356
2024/11/22
790
【C语言 】自定义数据类型(二)
C语言自定义类型联合体与枚举超详解
像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体。 给联合体其中一个成员赋值,其他成员的值也跟着变化。
fhvyxyci
2024/09/24
1270
C语言自定义类型联合体与枚举超详解
深入理解C语言中的枚举
在 C 语言中,枚举(enum)是一种重要的用户定义数据类型,主要用于表示一组相关的整数常量。虽然枚举在 C 语言中看似简单,但它在代码可读性、可维护性以及程序逻辑的清晰性方面具有很大的作用。本篇博客将深入探讨 C 语言中的枚举类型,包括其定义、用法、优势及一些常见的陷阱。
平凡之路.
2024/10/09
3540
C语言结合体和枚举的魅力展现
引言: 前面我们已经讲了结构体的声明,自引用,内存对齐等,详细见《掌握C语言结构体,开启编程新世界》。有需要的可以回看。 今天我们讲的是枚举和结合体,这两个跟结构体很相像但也是还是有差别的。
秋邱
2024/10/09
1250
C语言结合体和枚举的魅力展现
C语言教你怎么改变字体颜色
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151557.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
3.9K0
C语言教你怎么改变字体颜色
C语言自定义类型
风中的云彩
2024/11/07
1200
C语言自定义类型
C语言函数大全--h开头的函数
上述程序是一个基于DOS环境的磁盘错误处理示例。在磁盘操作出现错误时,向用户显示具体的错误消息,并提供 “中止”、“重试” 和 “忽略” 三种处理选项,根据用户的选择进行相应的处理。
huazie
2025/04/02
1180
C语言函数大全--h开头的函数
C语言函数大全--b开头的函数
开始之前,引用一篇《教你自创工作流,赋予AI助理个性化推荐超能力》,该文深入探讨了Spring AI及其在国内版本Spring AI Alibaba的实战应用,重点关注了如何构建一个功能丰富、智能高效的AI助理。有需要的朋友可以研究研究!
huazie
2024/12/06
2160
C语言函数大全--b开头的函数
C语言经典例题100
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
C语言与CPP编程
2021/04/02
2.9K0
C语言经典例题100
【C语言】C语言的变量和声明系统性讲解
在C语言中,**声明(Declaration)和定义(Definition)**是两个重要的基础概念,它们都涉及到变量、函数、结构体等的使用,但功能和作用存在明显区别:
LuckiBit
2024/12/11
2560
【C语言】C语言的变量和声明系统性讲解
C语言一百例(31-40)
31,题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。 程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。 程序源代码:
紫禁玄科
2022/03/24
3490
相关推荐
C语言坦克大战
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档