C必看高级编程技术ppt课件
合集下载
C语言ppt课件(完整版)

编译 链接 v0o1i0d1q0u0it(1v1oi0d1);110001 11010011 01110001 11010011 01110001 11010011
源程序 目标程序 可执行程序 v0o1i1d1s0h0o0w1Ta1b1le0(1v0o0id1);1 01110001 11010011 01110001 11010011 10101010
11010011 11010011
01110001 10110111
v0o1i0d1h0a0n1d1le_0m11e1n0u(0v0o1id)1;1010011 01110001 11010011 01110001 11010011
i1n1t1m1e0n0u0_0se0le1c1t1(v0o0id0)1; 11010011 01110001 11010011 01110001 11010011
sum=number1+number2;
printf("\n%d+%d=%d",number1,number2,sum); }
返 回 上一页
பைடு நூலகம்下一页
思考:加法器的局限性在于,它只能对整数 进行加法运算,是否可以编写这样的程序,可 以对任意两个整数进行加和减运算呢?
分析:该计算器实现两个功能:加法功能和减 法功能,因此,分别编写两个函数实现这两个 功能:加法函数sum( ),减法函数sub( )。
返回
下一页
标志符的命名规则:
(1)标识符只能由字母、数字、下划线组成,且 第一个字符不能为数字。
(2)C语言区分大小写。 (3)标识符的名字不能和C语言中的关键字和特
定字相同。 (4)标识符的长度最好不要超过8个字符。 (5)标识符的命名最好做到见名知意。如age用
源程序 目标程序 可执行程序 v0o1i1d1s0h0o0w1Ta1b1le0(1v0o0id1);1 01110001 11010011 01110001 11010011 10101010
11010011 11010011
01110001 10110111
v0o1i0d1h0a0n1d1le_0m11e1n0u(0v0o1id)1;1010011 01110001 11010011 01110001 11010011
i1n1t1m1e0n0u0_0se0le1c1t1(v0o0id0)1; 11010011 01110001 11010011 01110001 11010011
sum=number1+number2;
printf("\n%d+%d=%d",number1,number2,sum); }
返 回 上一页
பைடு நூலகம்下一页
思考:加法器的局限性在于,它只能对整数 进行加法运算,是否可以编写这样的程序,可 以对任意两个整数进行加和减运算呢?
分析:该计算器实现两个功能:加法功能和减 法功能,因此,分别编写两个函数实现这两个 功能:加法函数sum( ),减法函数sub( )。
返回
下一页
标志符的命名规则:
(1)标识符只能由字母、数字、下划线组成,且 第一个字符不能为数字。
(2)C语言区分大小写。 (3)标识符的名字不能和C语言中的关键字和特
定字相同。 (4)标识符的长度最好不要超过8个字符。 (5)标识符的命名最好做到见名知意。如age用
C语言程序设计教程PPT完整全套教学课件

联合体定义和使用场景分析
联合体定义
使用`union`关键字定义联合体类型,指定联合体名 称和成员列表。
内存共享
联合体的所有成员共享同一块内存空间。
使用场景
适用于多种数据类型但只需存储其中一种的场景, 如混合类型的数据存储和处理。
枚举类型定义及应用举例
枚举类型定义
使用`enum`关键字定义枚举类型,指定枚举名称和枚举常量列表。
01
跳转语句的概念和 特点
改变程序执行流程,实现程序的 跳转。
02
跳转语句的语法和 示例
break语句、continue语句、 goto语句等。
03
跳转语句的应用场 景
适用于需要中断循环、跳过某些 操作等特殊情况。
04
函数与模块化设计
函数定义和调用
函数定义的基本语法
返回类型 函数名(参数列表) { 函数体 }
将数组元素作为实参传递给形参,形参和实参类型必须一致;
数组名作为函数参数
将数组名作为实参传递给形参,形参和实参类型可以不一致,但形 参数组的大小必须大于等于实参数组的大小;
多维数组作为函数参数
多维数组可以作为函数参数传递,但需要注意多维数组的传递方式 和一维数组的传递方式不同。
06
指针与动态内存管理
02
数据类型、运算符与表达式
基本数据类型
01
整型(int)
02
浮点型(float、 double)
字符型(char)
03
04
布尔型(bool)
常量与变量
常量
在程序运行过程中,其值不能被改变 的量。
变量
在程序运行过程中,其值可以被改变 的量。
运算符和表达式
c语言课件ppt

C语言课件
汇报人:XXX 202X-12-31
目录
• C语言概述 • C语言基础语法 • C语言函数和数组 • C语言指针和内存管理 • C语言文件操作和程序调试 • C语言高级特性
01
C语言概述
C语言的起源和历史
C语言起源于20世纪70年代,由美国 贝尔实验室的Dennis Ritchie设计开 发。
使用智能指针或垃圾回收机制可以自动管理内存,减轻程序员负担。
05
C语言文件操作和程序调 试
文件打开和关闭
文件打开
使用fopen()函数打开文件,指定 文件名和打开模式(如只读、写 入等)。
文件关闭
使用fclose()函数关闭已打开的文 件,释放资源。
文件读写操作
文件读取
使用fscanf()或fgets()函数从文件中 读取数据。
位域
位域是C语言中一种节省内存的技能,它允许我们指定一个结构体中某个成员所占的位数。位域通常 用于存储二进制位或状态信息。
预处理器指令和宏定义
预处理器指令
预处理器指令在编译之前处理源代码。 常见的预处理器指令包括#include、 #define和#if等。#define指令用于定义 常量或宏,可以在编译时替换代码中的 文本。
01
02
03
04
指针是变量,用于存储内存地 址。
指针变量必须先定义类型,然 后才能存储地址。
使用“&”运算符获取变量的 地址,使用“*”运算符访问
指针所指向的值。
指针可以用于函数参数传递和 返回值,实现数据共享和函数
调用时的数据交换。
动态内存分配
使用“malloc()”,“calloc()”和 “realloc()”函数在堆上动态分配内 存。
汇报人:XXX 202X-12-31
目录
• C语言概述 • C语言基础语法 • C语言函数和数组 • C语言指针和内存管理 • C语言文件操作和程序调试 • C语言高级特性
01
C语言概述
C语言的起源和历史
C语言起源于20世纪70年代,由美国 贝尔实验室的Dennis Ritchie设计开 发。
使用智能指针或垃圾回收机制可以自动管理内存,减轻程序员负担。
05
C语言文件操作和程序调 试
文件打开和关闭
文件打开
使用fopen()函数打开文件,指定 文件名和打开模式(如只读、写 入等)。
文件关闭
使用fclose()函数关闭已打开的文 件,释放资源。
文件读写操作
文件读取
使用fscanf()或fgets()函数从文件中 读取数据。
位域
位域是C语言中一种节省内存的技能,它允许我们指定一个结构体中某个成员所占的位数。位域通常 用于存储二进制位或状态信息。
预处理器指令和宏定义
预处理器指令
预处理器指令在编译之前处理源代码。 常见的预处理器指令包括#include、 #define和#if等。#define指令用于定义 常量或宏,可以在编译时替换代码中的 文本。
01
02
03
04
指针是变量,用于存储内存地 址。
指针变量必须先定义类型,然 后才能存储地址。
使用“&”运算符获取变量的 地址,使用“*”运算符访问
指针所指向的值。
指针可以用于函数参数传递和 返回值,实现数据共享和函数
调用时的数据交换。
动态内存分配
使用“malloc()”,“calloc()”和 “realloc()”函数在堆上动态分配内 存。
高级编程技术PPT课件

MATFile * matOpen(const char *filename,const char *mode)
2.关闭数据文件──matClose
int matClose(MATFile *mfp)
3.获取变量──matGetVariable
mxArray *matGetVariable(MATFile *mfp,const char *name)
');
%将图像保存为真彩色的Байду номын сангаасmp
[x,map]=');
image(x);
18
图像、声音文件的读写
4.imfinfo函数:查询图像文件信息
innfo = imflnfo(filename)
5.wavread函数:用于读取扩展名为“.wav”的声音文件
y=wavread(file) [y, fs, nbits]=wavread(file)
22
8.2.2 MATLAB计算引擎
MATLAB的计算引擎应用就是利用MATLAB 提供的一组接口函数,在用户开发的C/C++语 言应用程序中,通过某种通信机制后台调用 MATLAB应用程序以完成复杂的系统任务。
23
例8-11
设计一程序,在C/C++语言中调用mesh函数来 绘制高斯矩阵的曲面。
8
8.1.3 文件定位和文件状态
1.feof函数:检测文件是否已经结束
status=feof(fid)
2.ferror函数:用于查询文件的输入、输出错误信息
msg=ferror(fid)
3.frewind函数:使位置指针重新返回文件的开头
frewind(fid)
4.fseek函数:设置文件的位置指针
2.关闭数据文件──matClose
int matClose(MATFile *mfp)
3.获取变量──matGetVariable
mxArray *matGetVariable(MATFile *mfp,const char *name)
');
%将图像保存为真彩色的Байду номын сангаасmp
[x,map]=');
image(x);
18
图像、声音文件的读写
4.imfinfo函数:查询图像文件信息
innfo = imflnfo(filename)
5.wavread函数:用于读取扩展名为“.wav”的声音文件
y=wavread(file) [y, fs, nbits]=wavread(file)
22
8.2.2 MATLAB计算引擎
MATLAB的计算引擎应用就是利用MATLAB 提供的一组接口函数,在用户开发的C/C++语 言应用程序中,通过某种通信机制后台调用 MATLAB应用程序以完成复杂的系统任务。
23
例8-11
设计一程序,在C/C++语言中调用mesh函数来 绘制高斯矩阵的曲面。
8
8.1.3 文件定位和文件状态
1.feof函数:检测文件是否已经结束
status=feof(fid)
2.ferror函数:用于查询文件的输入、输出错误信息
msg=ferror(fid)
3.frewind函数:使位置指针重新返回文件的开头
frewind(fid)
4.fseek函数:设置文件的位置指针
C高级编程技术

高级编程技术
介绍如何利用 TC 系统所提供的相关函数实现菜单设计、图形绘制、动画的播放、乐曲 的演奏、汉字的显示、图片的显现等技术,在讲述时,以问题-解答的方式来逐渐阐明。
1 文本的屏幕输出和键盘输入 ........................................................................................... 1 1.1 文本的屏幕输出.....................................................................................................................1 1.2 键盘输入.................................................................................................................................8 1.3 问题实现...............................................................................................................................11 1.4 高级应用——菜单实现.......................................................................................................14 实验一....................................................................................................23
介绍如何利用 TC 系统所提供的相关函数实现菜单设计、图形绘制、动画的播放、乐曲 的演奏、汉字的显示、图片的显现等技术,在讲述时,以问题-解答的方式来逐渐阐明。
1 文本的屏幕输出和键盘输入 ........................................................................................... 1 1.1 文本的屏幕输出.....................................................................................................................1 1.2 键盘输入.................................................................................................................................8 1.3 问题实现...............................................................................................................................11 1.4 高级应用——菜单实现.......................................................................................................14 实验一....................................................................................................23
C语言高级编程技巧.ppt

面向对象特性在C语言中的实现—继承性
继承:复用已经定义的操作。 C语言不支持继承,但struct可以实现组合 (Composition),可以先定义一个 “父”struct,然后定义一个“子”struct, 在“子”struct中添加其特有的属性和方法指 针,这样就模拟了继承。
面向对象特性在C语言中的实现—继承性(2)
谢谢!
面向对象特性在C语言中的实现—继承性(3)
在GTK中实现如下: struct GtkObject { ...... }
struct Widget { GtkObject object; ...... }
struct GtkContainer { GtkWidget widget; ...... }; struct GtkBin { GtkContainer container; ...... }; struct GtkButton { GtkBin bin; ...... };
举个例子,GTK+ 中有一个类 GtkObject,它是所有其 他类的父类。GTK+ 中最常用的按钮控件也是一个类 GtkButton,它继承自 GtkObject。它与 GtkObject 的继承关系是:
GtkObject->GtkWidget->GtkContainer->GtkBin- >GtkButton
button 声明为 GtkWidget 类型的指针,用 gtk_button_new_with_lable 创建 一个 GtkButton;G_OBJECT 是一个 宏,完成强制类型转换,这里将 button 从 GtkWidget 类型转换成 GObject 类型。
第八章汇编语言高级编程技术PPT课件
1 ??0000: LOOP ??0000
DELAY
000E B9 0AF1 1
MOV CX,2801
0011 E2 FE
1 ??0001: LOOP ??0001
12
四、宏指令中参数的使用
形式参数使宏更通用更灵活,而在宏调 用时给出实参数即可。
宏指令的实参数可以是常数、寄存器、 变量、表达式、操作码或操作码的一部分、 指令或伪指令助记符等,如此多的参数种 类以及参数传递的方便性是子程序所不能 比拟的。
宏指令允许嵌套。
13
例3.定义在两个字型内存变量之间传送数据的宏指令, 并调用之。
MOVE MACRO X,Y ;X→Y
PUSH AX
MOV AX,X
MOV Y,AX
POP AX
ENDM
DATA SEGMENT
VAR1 DW 6543H
VAR2 DW ?
DATA ENDS
MOVE VAR1,VAR2
;宏调用
;宏扩展
1 PUSH AX
1 MOV AX,VAR1
1 MOV VAR2,AX
1 POP AX
14
五、宏指令嵌套
宏指令允许嵌套,嵌套情况有两种: 宏定义体中含有宏调用
遵循先定义后引用的原则,后边的宏定义 可以调用在它之前定义的宏指令
宏定义体中含有宏定义
只有调用了外层宏指令后才能调用内层宏 指令,因为只有调用了外层的宏后,内层 的宏定义才有效。
宏与子程序类似,首先在源程序中定义 一个宏,后面在需要时就可以调用它,并 允许传递多个参数。
正确灵活使用宏,可以缩短源程序的长 度,扩充指令的功能,使源程序更清晰、 简洁,有利于阅读、修改与调试,从而提 高编程效率。
C语言高级编程实践PPT课件
2021/3/9 }
pbit=&bit; pbit->a=0; pbit->b&=3; pbit->c|=1; printf("%d,%d,%d\n",pbit->a,pbit->b,pbit->c);
阶段小节
位运算通常可以做哪些操作 位域的含义是什么 位域的使用要点有哪些
2021/3/9
2.3 指针特性
2.1.6 位运算例子
例2
题目:从键盘上输入1个正整数给int变量num,输出由8~11位构成的数(从低位、0号开始编号) 基本思路:
(1)使变量num右移8位,将8~11位移到低4位上。 (2)构造1个低4位为1、其余各位为0的整数。 (3)与num进行按位与运算。 /*程序功能:输出一个整数中由8~11位构成的数*/
数据指针 函数指针 数组与动态申请
2021/3/9
2.3.1 数据指针
指针所具有的对绝对地址单元内容的读写能力 指针直接操作内存多发生在如下几种情况
某I/O芯片被定位在CPU的存储空间而非I/O空间,而且寄存器对应于 某特定地址; 两个CPU之间以双端口RAM通信,CPU需要在双端口RAM的特定单 元(称为mail box)书写内容以在对方CPU产生中断; 读取在ROM或FLASH的特定单元所烧录的汉字和英文字模。
注意:长度为0的位段的作用是使下一个位段的内容从新的存储单元开始存放。
要点:注意每个字段的最大取值范围.如:data.a的取值只 能是:0~3, 因为两位二进制最大表示的数为3.
方法:通过结构体成员来应用:
如:
data.a=2; data.b=6;
2021/3/9
2.2.2 位域的使用
C语言详细教程(完整版)ppt课件
C语言有很多种,如:Microsoft C、Turbo C、
Quick C、Borland C++、Visual C等。本课程通
.
过Turbo C的环境来学习C语言。
C Programming Language
三、C程序格式和结构特点
例1.1 第一个程序 Hello,World!
/* example1.1 The first C Program*/
– 答疑时间:星期四 12:00~13:30 – 地点:鉴主-12楼-计算机技术研究所 – 第6周到第18周
考试
. C Programming Language
上机安排
地点:南湖计算中心机房
时间:待定 上机内容:随教学进度根据配套的实验书( 上机调试每次课堂作业) 要求:
• 所有作业必须独立完成
• 作业必须经上机调试通过
. C Programming Language
开始
N=0
N<10吗?
Y
输入 X
X>=0吗? N N=N+1
N
结束
Y 输出 X
[例1.4] 输入10个数,求它们的平均值。
N=0, SUM=0 当N<10 输入X SUM=SUM+X N=N+1 AVER=SUM/10 输出AVER的值
. C Programming Language
定点法
数制转换
数值数据:二进制
浮点法
数据
西文:ASCII
非数值数据:编码 汉字:国标码
. C Programming Language
图形:……
有符定点整数
ds dn dn-1 dn-2 ……..
c语言 ppt课件
程序调试和优化
01
02
03
调试技巧
断点、单步执行、变量监 视等。
优化方法
代码优化、算法优化、数 据结构优化等。
性能分析
时间复杂度、空间复杂度 等。
C语言在实际项目中的应用
系统编程
游戏开发
网络编程
嵌入式系统
操作系统内核、驱动程 序等。
游戏引擎、游戏逻辑等 。
网络协议、服务器端编 程等。
智能硬件、物联网等。
05
C语言常见问题和陷阱
内存泄漏和野指针
内存泄漏
当动态分配的内存未被释放时,会导 致内存泄漏。长时间运行程序会导致 可用内存逐渐减少,影响程序性能。
野指针
指针被释放后仍然被使用,或者未初 始化的指针被使用,导致程序行为不 可预测。
数组越界和段错误
数组越界
访问数组时超出其界限,可能导致读取或写入其他内存区域 ,造成数据损坏或程序崩溃。
系统软件
C语言也广泛应用于系统软件 开发,如编译器、数据库管理
系统和网络协议栈等。
02
C语言基础语法
数据类型
数据类型
定义变量时,必须指定其数据类 型,以便编译器了解如何存储和 操作该变量。C语言中的数据类 型包括整型、浮点型、字符型等
。
整型
用于存储整数,包括short、int 、long等类型。
THANKS
指针可以进行加减运算,指向数组元 素的指针可以进行算术运算,以访问 数组中的其他元素。
地址
每个变量在内存中都有一个唯一的地 址,通过地址可以访问变量的值。在 C语言中,地址可以通过取地址符&获 取。
结构体和联合体
01
结构体
结构体是一种自定义数据类型,可以包含多个不同类型的数据成员。通
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
该函数与开设的窗口无关,且原矩形区文本不 变。
1.4.2 屏幕文本存取函数
1、存文本函数——void gettext(int xl,int y1,int x2,int y2,void *buffer); 把 左 上角为(xl,y1),右下角为(x2,y2)的矩形区 内的文本存到由指针buffer指向的一个内存缓 冲区内。
1.1.3 字符显示亮度控制函数
void highvideo(void)—— 用 高 亮 度显示字符。
void lowvideo(void)——用低亮度 显示字符。
void normvideo(void)—— 将 设 置 通常亮度显示字符。
1.2 窗口设置和文本输出函数
在文本方式下,没进行窗口设置时,即 窗口设置缺省时,认为整个屏幕为显示 窗口,
C必看高级编程技术
屏幕文本输出 图形程序设计 硬件驱动 键盘鼠标输入方法编程 其它高级编程技术
一、屏幕文本输出
1.1文本方式的控制 1.2窗口设置和文本输出函数 1.3清屏和光标操作函数 1.4屏幕文本移动与存取函数 1.5状态查询函数
1.1.1 文本方式控制函数
文本方式就是显示文本的模式,它的显 示单位是字符而不是图形方式下的象素, 在屏幕上显示字符的位置坐标用行和列 表示。
Turbo C提供了窗口设置函数window(), 可由用户根据自己的需要来重新设定显 示窗口。当设定后,以后的控制台I/O操 作(即文本输入输出),就可均在此窗口 中进行。
1.2.1 窗口设置函数
void window(int x1,int y1,int x2, int y2);
其中(x1,y1)为窗口的左上角坐标,(x2, yz)为窗口的右下角坐标,这些坐标是以 整个屏幕为参考坐标系。
编写图形程序时用到的一些图形库函数均在 graphics.lib中,执行这些函数时,所需的有 关信息(如宏定义等)则包含在graphics.h头文 件中。
2.1.1 图形显示的坐标
显示器的屏幕如同一张坐标纸, 在其上显示图形时,图形上任一 点的位置均有确定的坐标,即可 用x,y坐标值来表示。
利用窗口函数可以在屏幕上定义多个不 同窗口,以显示不同的信息。
1.2.2 控制台文本输出函数
printf(),putc(),puts(),putchar() 和 输 出函数以整个屏幕为窗口的,它们不受由 window设置的窗口限制,也无法用函数控制它 们输出的位置。
Turbo C 提 供 了 三 个 文 本 输 出 函 数 , int
这里的text_info是在conio.h头文件中 定义的一个结构;
显示当前屏幕的显示方式,当前窗口的 坐标、当前光标的位置,文本的显示属 性等。
第二章 图形程序设计
Turbo C为用户提供了一个功能很强的画图软 件库,它又称为Borland图形接口(BGI),它包 括图形库文件(graphics.lib),图形头文件 (graphics.h)和许多图形显示器(图形终端)的 驱动程序(如CGA.BGI、EGAVGA.BGI等)。及一 些字符集的字体驱动程序(如goth.chr黑体字 符集等)。
0
40×25黑白显示
1
40×25彩色显示
2
80×25黑白显示
3
80×25彩色显示
7
80×25单色显示
-1
上一次的显示方式
1.1.2 文本方式颜色控制函数
文本颜色设置函数void textcolor(int color)——控制文本显示的前景色,即字符显 示的颜色,其参数color仅能选择17种颜色, 即值为0~16。
cprintf(char
*format,...);int
cputs(char *str);int putch(int ch); 它
们受窗口的控制,窗口内显示光标的位置,就
是它开始输出的位置。
1.3.1 清屏函数
void clrscr(void);清除窗口中的文本, 并将光标移到当前窗口的左上角,即(1, 1)处。
1.4.1 屏幕文本移动函数
void movetext(int x1,int y1,int x2,int y2,int x3,int y3);
该函数将把屏幕上左上角为(xl,y1),右下角 为(x2,y2)的矩形内文本拷贝到左上角为(x3, y3)的一个新矩形区内。这里x,y坐标是以整 个屏幕为窗口坐标系,即屏幕左上角为(1,1)。
2、取文本函数——void puttext(int x1,int y1,int x2,int y2,void *buffer); 把 由 buffer指针指向的缓冲区内所存文本复制到屏 幕上一矩形区内,该矩形区左上角为(x1,y1), 右下角为(x2,y2)。
1.5 状态查询函数
void gettextinfo(struct text_info *f);
缺省方式下,每屏为80列25行,Turbo C 规定屏的左上角为l行l列,屏的右下角 为25行80列。
Turbo C支持的文本显示方式有5种,它 们可以用文本显示方式设置函数来进行 设置。
文本显示方式设置函数:
void textmode(int newmode)
其中newmode的值可分别为:
文 本 背 景 颜 色 设 置 函 数 void textbackground(int color)—— 设 置 文 本 显 示的背景颜色,其参数color仅能选择8种颜色, 即值为0~7。
文 本 属 性 设 置 函 数 void textattr(int attr)——设置字符显示的颜色,背景色,字 符显示是否闪烁,显示属性参数attr可用一个 字节即8位来描述。
void clreol(void);除当前窗口中从 光标位置开始到本行结尾的所有字符, 但不改变光标原来的位置。
void delline(void);删除一行字符, 该行是光标所在行。
1.3.2 光标操作函数
void gotoxy(int x,int y);把光标移 到窗口内的(x,y)处,x,y坐标是相对 窗口而言。它多和cprintf函数配合,以 指定输出开始位置。
1.4.2 屏幕文本存取函数
1、存文本函数——void gettext(int xl,int y1,int x2,int y2,void *buffer); 把 左 上角为(xl,y1),右下角为(x2,y2)的矩形区 内的文本存到由指针buffer指向的一个内存缓 冲区内。
1.1.3 字符显示亮度控制函数
void highvideo(void)—— 用 高 亮 度显示字符。
void lowvideo(void)——用低亮度 显示字符。
void normvideo(void)—— 将 设 置 通常亮度显示字符。
1.2 窗口设置和文本输出函数
在文本方式下,没进行窗口设置时,即 窗口设置缺省时,认为整个屏幕为显示 窗口,
C必看高级编程技术
屏幕文本输出 图形程序设计 硬件驱动 键盘鼠标输入方法编程 其它高级编程技术
一、屏幕文本输出
1.1文本方式的控制 1.2窗口设置和文本输出函数 1.3清屏和光标操作函数 1.4屏幕文本移动与存取函数 1.5状态查询函数
1.1.1 文本方式控制函数
文本方式就是显示文本的模式,它的显 示单位是字符而不是图形方式下的象素, 在屏幕上显示字符的位置坐标用行和列 表示。
Turbo C提供了窗口设置函数window(), 可由用户根据自己的需要来重新设定显 示窗口。当设定后,以后的控制台I/O操 作(即文本输入输出),就可均在此窗口 中进行。
1.2.1 窗口设置函数
void window(int x1,int y1,int x2, int y2);
其中(x1,y1)为窗口的左上角坐标,(x2, yz)为窗口的右下角坐标,这些坐标是以 整个屏幕为参考坐标系。
编写图形程序时用到的一些图形库函数均在 graphics.lib中,执行这些函数时,所需的有 关信息(如宏定义等)则包含在graphics.h头文 件中。
2.1.1 图形显示的坐标
显示器的屏幕如同一张坐标纸, 在其上显示图形时,图形上任一 点的位置均有确定的坐标,即可 用x,y坐标值来表示。
利用窗口函数可以在屏幕上定义多个不 同窗口,以显示不同的信息。
1.2.2 控制台文本输出函数
printf(),putc(),puts(),putchar() 和 输 出函数以整个屏幕为窗口的,它们不受由 window设置的窗口限制,也无法用函数控制它 们输出的位置。
Turbo C 提 供 了 三 个 文 本 输 出 函 数 , int
这里的text_info是在conio.h头文件中 定义的一个结构;
显示当前屏幕的显示方式,当前窗口的 坐标、当前光标的位置,文本的显示属 性等。
第二章 图形程序设计
Turbo C为用户提供了一个功能很强的画图软 件库,它又称为Borland图形接口(BGI),它包 括图形库文件(graphics.lib),图形头文件 (graphics.h)和许多图形显示器(图形终端)的 驱动程序(如CGA.BGI、EGAVGA.BGI等)。及一 些字符集的字体驱动程序(如goth.chr黑体字 符集等)。
0
40×25黑白显示
1
40×25彩色显示
2
80×25黑白显示
3
80×25彩色显示
7
80×25单色显示
-1
上一次的显示方式
1.1.2 文本方式颜色控制函数
文本颜色设置函数void textcolor(int color)——控制文本显示的前景色,即字符显 示的颜色,其参数color仅能选择17种颜色, 即值为0~16。
cprintf(char
*format,...);int
cputs(char *str);int putch(int ch); 它
们受窗口的控制,窗口内显示光标的位置,就
是它开始输出的位置。
1.3.1 清屏函数
void clrscr(void);清除窗口中的文本, 并将光标移到当前窗口的左上角,即(1, 1)处。
1.4.1 屏幕文本移动函数
void movetext(int x1,int y1,int x2,int y2,int x3,int y3);
该函数将把屏幕上左上角为(xl,y1),右下角 为(x2,y2)的矩形内文本拷贝到左上角为(x3, y3)的一个新矩形区内。这里x,y坐标是以整 个屏幕为窗口坐标系,即屏幕左上角为(1,1)。
2、取文本函数——void puttext(int x1,int y1,int x2,int y2,void *buffer); 把 由 buffer指针指向的缓冲区内所存文本复制到屏 幕上一矩形区内,该矩形区左上角为(x1,y1), 右下角为(x2,y2)。
1.5 状态查询函数
void gettextinfo(struct text_info *f);
缺省方式下,每屏为80列25行,Turbo C 规定屏的左上角为l行l列,屏的右下角 为25行80列。
Turbo C支持的文本显示方式有5种,它 们可以用文本显示方式设置函数来进行 设置。
文本显示方式设置函数:
void textmode(int newmode)
其中newmode的值可分别为:
文 本 背 景 颜 色 设 置 函 数 void textbackground(int color)—— 设 置 文 本 显 示的背景颜色,其参数color仅能选择8种颜色, 即值为0~7。
文 本 属 性 设 置 函 数 void textattr(int attr)——设置字符显示的颜色,背景色,字 符显示是否闪烁,显示属性参数attr可用一个 字节即8位来描述。
void clreol(void);除当前窗口中从 光标位置开始到本行结尾的所有字符, 但不改变光标原来的位置。
void delline(void);删除一行字符, 该行是光标所在行。
1.3.2 光标操作函数
void gotoxy(int x,int y);把光标移 到窗口内的(x,y)处,x,y坐标是相对 窗口而言。它多和cprintf函数配合,以 指定输出开始位置。