前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >C语言中通用字符显示函数的设计

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

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

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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于控制台的通用文本输出函数设计
#define MaxCharsEachLine 80 /*一行所允许显示的最大字符*/
鲁郭大侠
2020/03/08
6140
花狗C语言彩色贪吃蛇(完整代码)
这是我在博客写的第一篇文章,如果哪里有问题还请多多指教!!以前我写的贪吃蛇是全图刷新的,导致在窗口运行时,眼睛都快闪瞎了!今天为大家带来了不闪的贪吃蛇!!!废话不多说,上图,上代码!!
花狗Fdog
2020/10/28
2.4K0
花狗C语言彩色贪吃蛇(完整代码)
C语言函数大全--b开头的函数
开始之前,引用一篇《教你自创工作流,赋予AI助理个性化推荐超能力》,该文深入探讨了Spring AI及其在国内版本Spring AI Alibaba的实战应用,重点关注了如何构建一个功能丰富、智能高效的AI助理。有需要的朋友可以研究研究!
huazie
2024/12/06
1340
C语言函数大全--b开头的函数
深入理解C语言中的枚举
在 C 语言中,枚举(enum)是一种重要的用户定义数据类型,主要用于表示一组相关的整数常量。虽然枚举在 C 语言中看似简单,但它在代码可读性、可维护性以及程序逻辑的清晰性方面具有很大的作用。本篇博客将深入探讨 C 语言中的枚举类型,包括其定义、用法、优势及一些常见的陷阱。
平凡之路.
2024/10/09
2800
C语言函数大全--g开头的函数(上)
上述代码是一个简单的图形程序,使用了图形库函数 arc 来绘制一个弧线并显示其起始和结束点的坐标。
huazie
2025/01/22
1190
C语言函数大全--g开头的函数(上)
C语言一百例(31-40)
31,题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。 程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。 程序源代码:
紫禁玄科
2022/03/24
3330
c程序设计,贪吃蛇程序是什么_C语言编写贪吃蛇
思路:一行一行的输出,输出完一行就换行继续输出,直到输出完边框部分。 第一步:先输出第一行,输完第一行进行换行。(这里@代表◼)
全栈程序员站长
2022/11/17
2K0
C语言程序设计50例(三)(经典收藏)
【程序31】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续    判断第二个字母。 1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。 2.程序源代码: 1 #include "stdio.h" 2 #include "conio.h" 3 void main() 4 { 5 char letter; 6 printf("please input the first letter of someday\n");
互联网金融打杂
2018/04/03
2K0
C语言教你怎么改变字体颜色
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151557.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
3.8K0
C语言教你怎么改变字体颜色
C语言自定义类型联合体与枚举超详解
像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体。 给联合体其中一个成员赋值,其他成员的值也跟着变化。
fhvyxyci
2024/09/24
1020
C语言自定义类型联合体与枚举超详解
【C语言】C语言的变量和声明系统性讲解
在C语言中,**声明(Declaration)和定义(Definition)**是两个重要的基础概念,它们都涉及到变量、函数、结构体等的使用,但功能和作用存在明显区别:
LuckiBit
2024/12/11
1790
【C语言】C语言的变量和声明系统性讲解
C语言自定义类型
风中的云彩
2024/11/07
830
C语言自定义类型
【C语言基础】:自定义类型(二) -->联合和枚举
书山有路勤为径,学海无涯苦作舟。 创作不易,宝子们!如果这篇文章对你们有帮助的话,别忘了给个免费的赞哟~
爱喝兽奶的熊孩子
2024/04/10
1310
【C语言基础】:自定义类型(二) -->联合和枚举
【C语言 】自定义数据类型(二)
像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所 以联合体也叫:共⽤体
用户11375356
2024/11/22
620
【C语言 】自定义数据类型(二)
c语言常见概念----
main函数式程序的入口,main有且仅有一个,即是一个项目中有多个.c文件,但只能有一个main函数(因为程序的入口只有一个)
凯子坚持C
2024/09/23
940
c语言常见概念----
C语言俄罗斯方块(新版本完整代码)
旧版800行代码,这个只有500行,并且不闪屏,看着舒服。废话不多说,上图,上代码。
花狗Fdog
2020/10/28
8.7K1
C语言俄罗斯方块(新版本完整代码)
【STM32】1.44寸TFT液晶屏显示字符、汉字和图片
这里有个小疑问:为啥引出两个GND和NC?不知道制造商怎么想的?有知道的小伙伴可以私信我呢。
AXYZdong
2022/01/07
1K0
【STM32】1.44寸TFT液晶屏显示字符、汉字和图片
C语言入门经典题目及其答案
【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码:
风骨散人Chiam
2020/10/28
2.8K0
1602 c语言驱动程序,51单片机驱动LCD1602程序设计(C语言)很详细的教程
delay_n40us(1);//实践证明,我的LCD1602上,用for循环1次就能完成普通写指令。
全栈程序员站长
2022/09/13
1.2K0
1602 c语言驱动程序,51单片机驱动LCD1602程序设计(C语言)很详细的教程
C语言坦克大战
//里规格:长39*2=78 (真坐标)(假坐标宽为39) 高39
紫禁玄科
2022/03/24
1K0
C语言坦克大战
相关推荐
基于控制台的通用文本输出函数设计
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文