《C语言实践教程课件整套电子教案.ppt》由会员分享,可在线阅读,更多相关《C语言实践教程课件整套电子教案.ppt(257页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第1章章 C语言概述语言概述1.1 C语言发展概述 C语言是比较流行的高级程序设计语言之一。它不但具有一般高级语言的特点,又可以像汇编语言一样,对硬件内存的位、字节直接进行操作,其运行效率非常高。 C语言的发展与操作系统UNIX密不可分,它是在B语言的基础上发展起来的,其根源可以追溯到ALGOL60。 1960年出现的ALGOL60是一种面向过程的高级语言,它离硬件比较远,不适合用来编写系统程序。 1963年剑桥大学推出了CPL(Combined Programming Language)语言,CPL语言在ALGOL60的基础上更接近硬件一些,但规模比较大。1967年剑桥大学的Matin R
2、ichards对CPL语言做了简化,推出了BCPL(Basic Combined Programming)语言。 1970年,UNIX开发者美国贝尔实验室的Ken Thompson以BCPL语言为基础,设计出更为简单的而且非常接近硬件的B语言,并用B语言编写了UNIX操作系统和绝大多数上层应用程序。 1972年,贝尔实验室的D.M.Ritchie在B语言的基础上又设计出了C语言。后来,C语言又多次做了改进,到1977年出现了不依赖于具体机器的C语言编译文本可移植C语言编译程序,使C移植到其他机器时所需要的工作大大简化了。到了20世纪80年代,C开始进入其他操作系统,并很快在各类大、中、小和微型
3、计算机上得到了广泛的使用。从而成为当代最优秀的程序设计语言之一。 1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C的发展和扩充,制定了新的标准,称为ANSI C。ANSI C比原来的标准C有了很大的发展。1988年K&R修改了他们的经典著作The C programming language,按照ANSI C标准又重写了该书。1987年,ANSI再次公布了新的标准87ANSI C。目前比较流行的C编译系统都是以它为基础。 随着面向对象编程技术的出现,在进一步扩充和完善了C语言基础上,又出现了C+。Java、C+等面向对象语言(第四代语言)是C语言的发展。 1.2 C语言
4、的特点 相对于其他高级语言,C语言有很多优点,概括起来,其主要特点如下:u语言简洁紧凑,使用方便灵活,运算符丰富 ;u表达能力强;u数据结构丰富,具有现代化语言的各种数据结构;uC语言是一种结构化程序设计语言;u可对硬件直接进行操作;u生成目标代码质量高,程序执行效率高;u可移植性好(与汇编语言相比);第第1章章 C语言概述语言概述第第1章章 C语言概述语言概述 1.3 C语言基本语法概述 1.3.1 C语言的语法特点& C程序是由函数构成的,其中必须有且只有一个主函数;& 函数体是由左右花括号 括起来的;& 一个C程序总是从main函数开始执行的;& C语言中的每个基本语句都以“ ;”结束;
5、& C语言书写格式自由,一行可以写一个语句,也可以写多个语句;& C语言本身没有输入、输出语句。输入和输出操作都是由库函数scanf和printf等函数来完成的;& 用/*/可以对C程序中的任何部分作注释。 第第1章章 C语言概述语言概述1.3.2 标识符、常量和变量 标识符:由英文字母、数字、下划线组成,且第一个字符必须是字母或下划线。另外大小写字母的含义不同;还有不能够使用C语言中的关键字做标识符。 常量:在程序运行过程中其值不能被改变的量。 变量:在程序的执行过程中其值可以被改变的量。 注意:使用变量前,一定要先定义后使用。第第1章章 C语言概述语言概述1.3.3 数据类型 & 整型数据
6、 整型常量: 十进制整数:以数码直接开头的常量; 八进制整数:以0开头的常量,如011; 十六进制整数:以0 x开头的常量,如0 x123; 整型变量 :如下表整型数据类型关键字所占位数所占字节数的表示范围基本型int162-215215-1短整型short int162-215215-1长整型long int324-231231-1无符号整型unsigned int1620216-1无符号短整型unsigned short1620216-1无符号长整型unsigned long3240232-1第第1章章 C语言概述语言概述 & 浮点型数据 浮点型常量: 十进制数形式:它是由数字和小数组成;
7、 指数形式:如0.00123用指数法可表示为1.23e-3; 实型变量: 单精度(float):占4个字节,有效位为7位,数值范围为10-381038; 双精度(double):占8个字节,有效位为1516位,数值范围约为 10-30810308; & 字符型数据 字符型常量:由一对单引号括起来的单个字符; 转义字符: 特殊形式的字符常量,它以开头; 字符型变量:存放一个字符的ASCII码值,占一个字节; 字符串常量:一对双引号括起来的字符序列。C语言中规定以 0作为字符串结束标志。 第第1章章 C语言概述语言概述 1.3.4 运算符与表达式 1.3.4.1 算术运算符 算术运算符:加、减、乘
8、、除、模,用+,-,*,/,%表示, 其中 模%,仅用于整型变量或整型常量; 乘、除、模优先级高于加、减的优先级;结 合方向为从左至右; 1.3.4.2 赋值运算符及其表达式 赋值运算符:“=”; 其作用是将一个数据赋给一个变量; 在“=”之前加上其它运算符可构成复合运算 符,如+=等; 第第1章章 C语言概述语言概述 1.3.4.3 增1、减1运算符 i+(或或i-):表示在使用该表达式值之后将i值加1(或减1)。 +i(或或-i):表示在使用该表达式值之前将i值加1(或减1)。 1.3.4.4 关系运算符 关系运算符关系运算符:, =, =, = =,!=; 前4个运算符的优先级高于后2个
9、。结合方向是 自左向右。 1.3.4.5 逻辑运算符 逻辑运算符逻辑运算符:“&”(逻辑与逻辑与)、“|”(逻辑或逻辑或)和和“!”(逻辑非逻辑非)。 其中“&”和“|”为自左向右结合方向;逻辑运算 符的操作对象应为零或非零整数值。 第第1章章 C语言概述语言概述 1.3.4.6 位运算符 位运算符位运算符: &, |, , , 。 在位运算符中,的优先级最高,其次是,然后 依次是&, , |。 1.3.4.7 逗号运算符及其表达式 逗号运算符:逗号运算符:“,”; 其一般形式其一般形式:,; 执行过程:先求表达式1的值,再求表达式2的值,表达式2的值就是整 个逗号表达式的值。 1.3.4.8
10、 条件运算符及其表达式 条件运算符条件运算符: ? :;一般形式;一般形式:?:; 执行过程:先计算的值,如果值为真,则计算值, 并把该值作为条件表达式值. 若值为假,则计算的值,并将该值作为条件表达式的值。第第1章章 C语言概述语言概述 1.3.5 数据的输入与输出数据的输入与输出 1.3.5.1字符数据的输入与输出字符数据的输入与输出 putchar函数 格式:格式:putchar(c); 功能:向终端输出一个字符。 getchar函数 格式:格式: getchar( ); 功能:从键盘上接收输入的一个字符。 第第1章章 C语言概述语言概述 1.3.5.2 数据按格式输入与输出数据按格式输
11、入与输出 printf函数 格式格式:printf (“格式控制格式控制”,输出表列,输出表列); 说明:“格式控制”是用双引号括起来的字符串。包括格式 说明、普通字符和转义字符。 scanf函数 格式格式:scanf(“格式控制格式控制”,地址表列,地址表列); 说明:“可以同时输入多个任何相同(不同)类型的数据。 “格式控制”的含义同printf函数;地址表列是由“&+ 变量名”组成,多个地址之间用“,”分隔。 格式控制符说明如下表:第第1章章 C语言概述语言概述格式字符功能d按十进制形式输出带符号的整数(正数前无+号)o按八进制形式无符号输出(无前导0)x按十六进制形式无符号输出(无前导
12、0 x)u按十进制无符号形式输出c按字符形式输出一个字符f按十进形式输出单、双精度浮点数(默认6位小数)e按指数形式输出单、双精度浮点数s输出以结尾的字符串ld长整型输出lo长八进制整型输出lx长十六进制整型输出lu按无符号长整型输出m格式字符按宽度m输出,右对齐-m格式字符按宽度m输出,左对齐m,n格式字符按宽度m,n位小数,或截字符串前n个字符输出,右对齐-m,n格式字符按宽度m,n位小数,或截字符串前n个字符输出,左对齐第第1章章 C语言概述语言概述 1.3.6 分支语句分支语句 1.3.6.1 C语句概述语句概述(C语句分为5类): 控制语句:完成一定的控制功能; if( )-else
13、 : (条件语句); for( ) ; while( ); do_ while( ) : (循环语句); continue : (结束本次循环语句); break : (中止执行switch或循环语句); switch : (多分支选择语句); go to : (转向语句); return : (从函数返回语句); 函数调用语句:函数调用语句加一个分号; 空语句 : 由单独一个分号组成; 复合语句: 用 把一些语句括起来; 第第1章章 C语言概述语言概述1.3.6.2 3种基本结构种基本结构 顺序结构:按从上到下的顺序依次执行。 选择结构:通过对一个特定条件的判断来选择一 个分支执行,常见的语
14、句类型为: ifelse语句和switch语句。 循环结构: 在给定的条件下,重复执行某段程 序,直到不满足条件为止。它包括三 种类型的语句:while语句、do while语句和for语句。 第第1章章 C语言概述语言概述1.3.6.3 条件语句条件语句 if语句的第一种形式: 格式格式:if(表达式表达式)语句语句 功能:首先计算表达式的值,若表达式的值为 “真”(为非0),则执行语句;若表达式的值 为“假”(为0),不执行语句。 if语句的第二种形式: 格式格式:if(表达式表达式)语句语句1 else 语句语句2 功能:首先计算表达式的值,若表达式的值为 “真”(为非0),则执行语句1
15、;若表达式 的值为“假”(为0),则执行语句2。第第1章章 C语言概述语言概述 if语句的第三种形式: 格式格式:if(表达式表达式1) else if(表达式表达式2) else if(表达式表达式3) else if(表达式表达式n) else 功能:首先计算表达式的值,若第n个表达式的值为“真”(非0),则执行语句n,若所有的表达式的值都为“假”(0),则执行语句n+1。 注意注意:在if和else后面可以只含有一个内嵌的操作语句,也可以含有多个操作语句,此时应用花括号“ ”将几个语句括起来,构成一个复合语句。 if的个数一定不小于else的个数。else总是与它上面最近的且未曾使用过的
16、if相配对。第第1章章 C语言概述语言概述 1.3.6.4 开关(开关(switch)语句)语句 一般形式如下: switch(表达式)(表达式) case常量表达式常量表达式1:语句语句1 case常量表达式常量表达式2:语句语句2 case常量表达式常量表达式n:语句语句n default:语句语句n+1 执行过程:首先计算switch后面圆括号内表达式的值,若此值等于某个case后面的常量表达式的值,则转向该case后面的语句去执行;若表达式的值不等于任何case后面的常量表达式的值,则转向default后面的语句去执行;如果没有default部分,直接转到switch语句后面的语句去执
17、行。第第1章章 C语言概述语言概述1.3.7 循环语句循环语句1.3.7.1 go to语句语句 一般形式:一般形式: 语句标号:语句;语句标号:语句; if(条件表达式条件表达式) go to 语句标号;语句标号; 说明:语句标号必须用标识符表示,go to语句与if语句一起构成循环结构;当条件表达式成立时,重复执行语句标号到if语句之前的内容。 注意:go to 语句的用法不符合结构化原则,一般不宜采用。 第第1章章 C语言概述语言概述1.3.7.2 while语句语句 格式:格式:while(表达式)(表达式) 语句语句 功能:当表达式的值为非0时,执行while语句中的循环体;当表达式
18、的值为时,结束循环,继续执行循环体下面的语句。 注意:循环体如果包含一个以上语句,应该注意:循环体如果包含一个以上语句,应该用花括弧括起来,以复合语句的形式出现,否则用花括弧括起来,以复合语句的形式出现,否则while语句范围只到语句范围只到while后面第一个分号处。后面第一个分号处。第第1章章 C语言概述语言概述1.3.7.3 dowhile语句语句 格式:格式:do while(表达式表达式) 功能:先执行一次指定的语句,然后判断表达式的值,当表达式的值为非零(“真”)时,返回重新执行该语句,如此反复,直到表达式的值等于0为止,此时循环结束。 注意:循环体部分如果有多个语句,则必须用左注
19、意:循环体部分如果有多个语句,则必须用左右花括号括起来,使其形成复合语句。右花括号括起来,使其形成复合语句。第第1章章 C语言概述语言概述1.3.7.4 for语句语句 格式:格式:for(表达式表达式1;表达式;表达式2;表达式;表达式3) 循环体语句循环体语句 执行过程:先计算表达式1的值;然后计算表达式2 的值,若结果为真(非0),则执行后面的循环体中的各语句;若为假,则结束循环;进行表达式3 的计算,至此完成一次循环;再次计算表达式2 的值,开始再次循环,直到计算表达式2的值为0,中止循环。 注意:注意:for 语句中条件测试总是在循环开始时语句中条件测试总是在循环开始时进行。如果循环
20、体部分是多个语句组成的,则必须用进行。如果循环体部分是多个语句组成的,则必须用左、右花括号括起来,使其成为一个复合语句。左、右花括号括起来,使其成为一个复合语句。 省略表达式1时,其后的分号不能省略。如果表达式2省略,即认为表达式2始终为真。 第第1章章 C语言概述语言概述1.3.7.6 break语句和语句和continue语句语句 格式:break; 功能:break语句可以用于switch语句或循环语句中。在switch语句中,其作用是跳出switch语句,转入switch外的下一个语句;在循环语句中,其作用是跳出该层循环,转到下一个语句。 注意:注意:break语句不能跳出多层循环,如
21、果需要语句不能跳出多层循环,如果需要跳出多重循环可以用跳出多重循环可以用goto语句实现。语句实现。 格式:continue; 功能:跳过循环体中位于continue语句后面的尚未执行的语句,转去判断是否继续进行下一次循环。 注意:注意:continue语句只结束本次循环,而不是终语句只结束本次循环,而不是终止整个循环的执行。而止整个循环的执行。而break语句则是结束循环,不再进语句则是结束循环,不再进行判断。行判断。第第1章章 C语言概述语言概述1.3.8 数组数组1.3.8.1一维数组的定义、引用和初始化一维数组的定义、引用和初始化1. 一维数组的定义格式:类型说明符格式:类型说明符 数
22、组名数组名常量表达式常量表达式;功能:定义一维数组,常量表达式表示数组元素的个数。注意:注意:数组名后面是方括弧,不是圆括弧。 常量表达式表示元素个数,即数组的长度。 数组元素的下标是从0开始的。下标最大值为:常量 表达式值减1。 常量表达式可是常量和符号常量,不能是变量。 数组必须先定义,后使用。 第第1章章 C语言概述语言概述2. 一维数组元素的引用 数组元素表示形式为:数组名下标。3. 一维数组的初始化 int a10=0,1,2,3,4,5,6,7,8,9; 可以只给一部分元素赋初值,后几个元素值为0。 在全部数组元素赋初值时,可以不指定数组长度。 例如:int a5=1,2,3,4,
23、5;或 int a =1,2,3,4,5;1.3.8.2二维数组的定义、引用和初始化二维数组的定义、引用和初始化1二维数组的定义二维数组的定义 格式:类型说明符格式:类型说明符 数组名数组名常量表达式常量表达式1常量表达式常量表达式2; 功能:定义一个二维数组。表达式1是数组元素的行数, 表达式2是数组元素的列数。第第1章章 C语言概述语言概述2二维数组的引用二维数组的引用 二维数组元素的表示形式为:数组名二维数组元素的表示形式为:数组名下标下标下标下标 注意:注意: 引用二维数组时,逐个元素引用,不能引用整个数组。 使用数组元素时,下标值应在已定义的数组的范围内。3二维数组的初始化二维数组的
24、初始化 分行给二维数组赋初值。 例如:int a34=1,2,3,4,5,6,7,8,9,10,11,12; 将所有的数据写在一个花括号内。 例如:int a34=1,2,3,4,5,6,7,8,9,10,11,12; 对部分元素赋初值(没有赋值的元素的值都是0)。 例如:int a34=1,2,0,0,3,5,6; 注意:注意: 如果对全部元素都赋初值,则定义数组时对第一维 的长度可以不指定,但第二维的长度不能省略。第第1章章 C语言概述语言概述1.3.8.3 字符数组与字符串字符数组与字符串1字符数组定义形式 一维数组:char 数组名常量表达式; 二维数组:char 数组名常量表达式1常
25、量表达式2;2字符数组的初始化1)赋值给数组中的各个元素。 例如:char c=w, , e, y, d ; 注意:注意: 如果花括号中提供的数值个数大于数组长度,则作语法错误处理。如果初值个数小于数组长度,则只将这些字符赋给数组中的前面那些元素,其余元素自动定为空字符。 如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度。 用字符串常量使字符数组初始化。char c6=china;第第1章章 C语言概述语言概述3. 字符数组的引用 字符数组的引用同前面其它类型数组元素引用一样。4. 字符串和字符串结束标志 字符串常量是用双引号括起来的一串字符,且用0作为 字串结束标志,它占内存
26、空间,但不计入串的长度。 注意:注意:可以通过赋初值隐含确定数给长度。 例如:char str =“china”;/*串的长度为6;自动末尾加0*/。6. 字符数组的输入输出 逐个字符输入或输出:scanf和printf;getchar和putchar。 整个字符串一次输入或输出: 例如:char c =china; printf (%s,c); 注意:注意:输出字符不包括结束符输出字符不包括结束符0。用。用“%s”格式时,格式时,printf中的输出项是数组名。如果数组长度大于字符串实际长中的输出项是数组名。如果数组长度大于字符串实际长度,也只输出到遇到度,也只输出到遇到0结束。结束。第第1
27、章章 C语言概述语言概述7字符串处理函数 puts(字符串):将一个字符串输出到终端。 gets(字符数组):从终端输入一个字符串到字符数组。 strcat(字符串1,字符串2):连接两个字符串,把字符串2 接到字符串1的后面,结果放在字符串1中。 注意:字符串注意:字符串1必须足够大,以便能容纳连接后的新字必须足够大,以便能容纳连接后的新字 符串。连接的两个字符串后面都有一个符串。连接的两个字符串后面都有一个0,连,连接接 时将字符串时将字符串1后面的后面的0取消,只在新串的最后取消,只在新串的最后保保 留一个留一个0。 strcpy(字符数组,字符串):字符串拷贝到字符数组中去。 注意:注
28、意:字符数组必须足够大,以便能容纳被拷贝的字字符数组必须足够大,以便能容纳被拷贝的字 符串。拷贝时连同字符串后面的符串。拷贝时连同字符串后面的0一起拷贝到一起拷贝到字字 符数组中。符数组中。 不能用赋值语句将一字符串常量或字符数组直不能用赋值语句将一字符串常量或字符数组直 接赋给一个字符数组。接赋给一个字符数组。 第第1章章 C语言概述语言概述 strcmp(字符串1,字符串2): 按ASCII码值大小比较,将两个字符串自左至右逐个字符相比,直到出现不同的字符或到0为止。如果全部字符相同,则认为相等,如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。比较的结果由函数值带回。 注意:注
29、意:字符串1=字符串2,函数值为0;字符串1字符串2,函数值为0;字符串1字符串2,函数值为pf2 表示pf1处于高地址位置; pf1成员名;用指针变量来指向结构体数组,用指针变量引用结构体数组的元素。 第第1章章 C语言概述语言概述1.3.11.5指针与链表指针与链表链表是一种常见的数据结构,我们可以动态地进行存储分配。链表是由被称为结点的元素构成的,结点的多少根据需要而定。每个结点都由两部分组成:一是数据部分,即用户需要处理的数据;二是指针部分,存放下一个结点的地址。链表中的结点是通过指针链接在一起的链接原则:前一个结点指向下一个结点;只有通过前一个结点才能找到下一个结点。一个链表首先要知
30、道表头指针,一个结点一个结点的链接,直到最后一个结点,该结点不再指向下一个结点,它的地址部分放一个“NULL”(表示空结点),它称为表尾。第第1章章 C语言概述语言概述 把结构体变量用作链表中的结点。一个结构体变量包括若干成员,它们可以是数值型、字符型、数组型,也可以是指针类型。用指针类型成员来存放下一个结点的地址非常方便。建立动态链表,就是一个一个地开辟结点和输入各结点数据,并建立前后相链的关系。在建立动态链表时,链表上的每个结点不是静态定义好的,而是根据需要随时从内存中申请得到的,同时也根据需要随时释放不需要的结点。为此,C语言系统提供了动态申请和释放内存的库函数malloc( n ):其
31、作用是在内存的动态存储区中分配一个长度为n个字节的连续空间。此函数的返回值是一个指向已分配存储单元的起始地址的指针。free( p ):其作用是释放由p 指向的内存区,使这部分内存区能被其他变量使用。第第1章章 C语言概述语言概述 从链表中删除一个指定结点,首先要查找这个结点,如果找到就将其删除,否则将不执行删除操作。 实际上删除一个结点,并不是真正将它从内存中删掉,而是把它从链表中分离出来,撤消原来的链接关系。 在链表中插入一个新结点,首先要找到指定结点,然后在它后面插入一个新结点,断开原来的链接,把新结点的地址赋给指定结点的指针,把指定结点的下一个结点的地址赋给新结点的指针。这样就插入了一
32、个结点。 第第1章章 C语言概述语言概述1.3.11.6共用体共用体 共用体是一种特殊的结构,它的特点是各个成员共享同一段存储单元。如果在共用体中有若干个不同类型的成员,在一瞬间只有一个成员起作用,实际是最后一个存放成员起作用。 共用体的定义: union 结构体名 数据类型 成员名1; 数据类型 成员名2; 数据类型 成员名3; 数据类型 成员名n; ; 结构体和共用体可以互相嵌套。可以用“.”或“-”运算符来访问共用体中的成员。第第1章章 C语言概述语言概述 注意共用体和结构体的不同:注意共用体和结构体的不同: 存储方式存储方式: 结构体的各个成员各自占用自己的存储单元,各有自己的地址,各
33、个成员所占的存储单元的总和一般就是结构体的长度。 而共用体是各个成员共享同一段存储单元,起始地址相同,占用存储单元最多的成员的长度就是共用体的长度。 初始化初始化: 结构体变量可以初始化,共用体变量不能初始化。第第1章章 C语言概述语言概述1.3.11.7 枚举枚举 如果一个变量的取值范围有限,可以定义为枚举类型。枚举的一般定义形式为: enum 枚举类型名枚举类型名取值取值1,取值,取值2,取值,取值n; 其中, 中的值称为枚举元素或枚举常量,C在编译时按定义的顺序使他们的值分别为0、1、2等,依次加1,也可以在定义枚举类型的同时为其中的枚举常量赋值。枚举类型定义之后,就可以定义相应的枚举常
34、量。1.3.11.8类型定义类型定义 在C语言中除了使用C提供的标准类型名(如int、char等),还可以用typedef声明新的类型名来代替已有的类型名。 定义的一般形式为:typedef 类型名类型名 新类型名新类型名 这样就可以用新类型名来定义变量。第第1章章 C语言概述语言概述1.3.12位运算与文件位运算与文件1.3.12.1位运算符位运算符位逻辑运算符号:(按位取反)、&(按位与)、|(按位或)、(按位异或)。位移位运算符:(按位右移)。位自反赋值运算符:&=、|=、=、=。1.3.12.2位运算符的运算规则位运算符的运算规则 移位时,移出的位数全部丢弃,移出的空位补入的数与左移还
35、是右移有关。 如果是左移,则规定补入的数全都是; 如果是右移,还与被移位的数据是否带符号有关。若是不带符号的数据,则补入的数全都为;若是带符号的数据,则补入的数据为原数的符号位上的数。 第第1章章 C语言概述语言概述位运算符的运算规则如表所示。 第第1章章 C语言概述语言概述1.3.12.5文件文件 1. 文件类型指针: 文件结构是由系统定义的,取名为FILE。有了FILE类型以后,可以用它来定义文件类型指针变量,以便存放文件的信息, 2. 文件的打开与关闭: C语言和其他高级语言一样,对文件读写之前必须先打开文件,在使用文件之后应关闭该文件。文件的打开与关闭是通过调用fopen和fclose
36、函数来实现的。 3. 字符读写函数: fputc( )、fgetc( )、putc( )和getc( )这是两组字符读写函数,它们均用于从文件中读出一个字符,或把一个字符写入文件。它们与函数putchar()和getchar()的不同在于,前者是针对文件操作,而后者是针对标准输入输出设备操作的。第第1章章 C语言概述语言概述 4. 字符串读写函数: fgets( )和fputs( )用于从指定的文件中读出一个字符串或把一个字符串写入指定的文件中。 5格式读写函数: fscanf( )和fprintf( ),他们可以实现对文件的格式读写。它们与scanf( )和printf( )的区别在于,这两
37、个函数是对磁盘文件进行读写,而不是对标准输入输出设备进行读写。 6数据块读写函数: fread( )和fwrite( )用来对文件进行数据块的读写,调用一次函数可读或写一组数据。 第第1章章 C语言概述语言概述 7. 文件定位函数: ftell( )可返回文件指针的当前值;Fseek( )用于使文件指针在文件中移动;rewind( )使文件fp的位置指针指向文件开始。 8. 文件的检测: feof( )专门用作二进制文件的结束标志,也可作为文本文件的结束标志。如果文件指针已到文件末尾,则函数返回非0值;否则,返回0。 ferror( )用来检测文件读写时是否发生错误,若未发生读写错误,则返回0
38、值,否则,返回非0值。 clearer( )用于将文件的出错标志和文件结束标志置0。第第2章章 C程序设计开发环境介绍程序设计开发环境介绍 2.1 Turbo C 2.0集成开发环境集成开发环境2.1.1 Turbo C 2.0集成开发环境集成开发环境 Turboc 2.0是Borland公司于1987年开发的C语言源程序处理软件。该软件具有速度快、效率高、功能强的特点,它是当时软件开发的主流工具。2.1 Turbo C 2.0集成开发环境集成开发环境2.1.1.1、Turbo c 2.0的启动的启动 Turboc 2.0可由纯DOS环境或Windows平台下的MS_DOS启动。若Turbo
39、c 2.0安装在D:的根目录下,我们就可以进行如下操作:D:cd turboc 2D: turboc 2D: turboc 2tc 启动后就可以进入Turboc 2.0集成编译环境,其界面如图所示。 2.1 Turbo C 2.0集成开发环境集成开发环境2.1 Turbo C 2.0集成开发环境集成开发环境2.1.1.2菜单命令简介菜单命令简介File菜单:菜单:Load(F3):加载文件。Pick(Alt+F3):选择文件。New:建立新的源程序文件。Save(F2):将编辑区中的文件存盘。Write to:文件另存为。Directory:显示源程序文件的存储路径。Change dir:改变
40、目录。OS Shell:暂时退出TC2.0到Dos提示符下。用Exit返回到TC环境。Quit (Alt + X):退出TC2.0到Dos提示符下。 2.1 Turbo C 2.0集成开发环境集成开发环境Run菜单:菜单:Run(Ctrl+F9):运行程序。Program reset(Ctrl+F2):序重起。Go to cursor(F4): 调试程序时,使程序运行到光标处。Trace into(F7): 使程序运行时有亮条显示当前执行的函数或过程的位置。Step over(F8): 单步执行命令,一次执行一条语句。User screen(Alt+F5):在用户窗口和编辑窗口之间进行切换。用
41、于查看结果。 2.1 Turbo C 2.0集成开发环境集成开发环境Compile菜单菜单:Compile to obj :编译源程序生成目标文件。Make EXE file :生成可执行文件。Link EXE file :连接成可执行文件。Build all : 编译工程中的所有文件,打包生成可执行文件。Primary C file :指定编译的主文件。Get info : 获得当前的相关信息(路径、源文件名及大小、编译中的错误数等。2.1 Turbo C 2.0集成开发环境集成开发环境Project菜单菜单:Project name :工程文件(.PRJ)名Break make on :
42、终止编译。Auto dependencies:编译时源文件与目标文件的时间对应检查开关。Clear project: 清除工程文件名。Remove messages: 删除信息窗口中的信息。2.1 Turbo C 2.0集成开发环境集成开发环境Options菜单菜单:Include directories : Tc2.0系统文件所在目录。Library directories : Tc2.0库文件所在目录。Output directory :输出目录即生成目标文件和可执行文件所在目录。Turbo C directory : Tc.exe文件所在的目录。Pick file name : 定义加载
43、的Pick文件名。Current pick file: 当前加载的Pick文件目名。2.1 Turbo C 2.0集成开发环境集成开发环境Break/Watch菜单:菜单:Add watch : 在监视窗口插入监视表达式。Delete watch :删除监视窗口当前监视表达式。Edit watch :在监视窗口编辑监视表达式Remove all watches :从监视窗口删除所有的监视表达式。Toggle breakpoints Ctrl-F8 :设置或删除光标所在的行为断点。Clear all breakpoints:清除所有的断点。View next breakpoints:移动光标到下
44、一个断点。2.1 Turbo C 2.0集成开发环境集成开发环境2.1.1.3 程序的建立编辑与保存程序的建立编辑与保存 按功能键F10后,用光标移动键将亮条选中File菜单或用Alt-F打开File菜单,再用鼠标或“”、“”键选中“New”命令项回车,这样就可以建立一个新文件。对源程序进行建立、修改等编辑操作之后,要按F2键保存程序。2.1 Turbo C 2.0集成开发环境集成开发环境2.1.1.4 源程序的编译连接和运行源程序的编译连接和运行 可以用“Run” 菜单中的“Run”命令或按“Ctrl+F9”键,对源程序进行编译、连接和运行。源程序在建立、编辑过程中,如果有语法错误,在对源程
45、序进行编译的过程中,TC2.0编译系统会给出错误信息提示,并停止编译且用亮条或彩条指示出错的语句行,用户对源程序进行修改之后,再进行编译。 对源程序进行编译之后,系统将生成扩展名为“.obj”的目标文件,然后系统经过目标文件的连接(link)生成扩展名为“.exe”的可执行文件。2.1 Turbo C 2.0集成开发环境集成开发环境2.1.1.5看运行结果看运行结果 TC2.0集成开发环境中有两个窗口,一个是编辑窗口,另一个是用户窗口。源程序的运行结果显示在用户窗口。而用户窗口是隐含的。用户要想看到运行结果,可以在编辑窗口中按下Alt+F5键进行编辑窗口和用户窗口的切换。2.1.1.6 执行文
46、件的生成与运行执行文件的生成与运行 在上面的运行步骤中系统首先生成可执行文件后再执行它。用户在用户窗口中看见的运行结果,是系统执行扩展名为“.EXE”的可执行文件的结果。2.1 Turbo C 2.0集成开发环境集成开发环境2.1.1.7其他编译和调试操作其他编译和调试操作 调试程序时,按下F8键,可以单步执行程序;利用Break/watch菜单中的Add watch命令可以进行单步执行方式下的变量监视; 利用Break/watch菜单中的Toggle breakpoint命令可以设置断点,使程序运行到断点时暂停,按Alt-F9使程序从中断处继续运行。还有一些其他的调试操作。2.1 Turbo
47、 C 2.0集成开发环境集成开发环境2.1.2 常见典型错误常见典型错误l输入时括弧不配对,引号不配对,逗号、分号混淆。l输入函数时,变量名后没有存储位置标识符&。lscanf()和printf()函数的格式与控制字符错误。l变量类型与控制格式符不对应。lif语句中,语句条数多于1条时,没有使用复合语句标志。l使用开关语句时没有恰当的附带break语句。l循环体应该加的复合语句标志没加。l字符数组存储地址的引用与非字符数组混淆。l函数的形参类型与实参类型不一致。l变量的作用域不明确,造成运行结果错误。l对没有打开的文件进行了读、写操作。l对已经存在的文件进行盲目的写操作使文件原来的内容被破坏。
48、 2.2 WinTC1.9.1集成开发环境集成开发环境 Win-TC是windows平台下的C语言开发工具,它使用了Turbo C 2.0为内核,提供Windows平台的开发界面,因此也就支持windows平台下的功能。如剪切、复制、粘贴和查找/替换等操作。 与Turbo C2.0相比,Win-TC在功能上也进行了很大扩充,提供了诸如C内嵌汇编等功能。此外,还带有点阵字模工具、注释转换等工具集,为程序的开发提供了很大的帮助。 Win-TC简繁双语版可以正常运行于98及其以上的简体及繁体WINDOWS操作系统之上。 2.2 WinTC1.9.1集成开发环境集成开发环境2.2.1 Win-TC的特
49、点的特点u可以充分利Windows支持剪贴板和中文的特点。uInciude和Lib路径可自动定位,不用手动设置。u具备编译错误捕捉功能。u支持C内嵌汇编从而实现C/ASM混合编程。u支持C扩展库(自定义LIB库)u支持语法加亮功能,并可以自定义设置。u允许自定义设置输入风格,能实现与VC类似的输入风格。u可选择是否生成“.asm”、“.map”或“.obj”文件,甚至可以指定只生成“.exe”文件。u稳定的文件操作功能,支持历史记录列表和使用模块。u具有行标计数的功能,并可以设置样式。2.2 WinTC1.9.1集成开发环境集成开发环境2.2.3.1基本布局基本布局 Win-TC的基本布局如图
50、所示: 上方显示的是菜单栏和工具栏,包括文件操作(新建、打开、保存等)、编辑操作(剪切、复制、粘贴、查找、替换等)、程序运行操作(编译链接和编译链接并运行命令)等; 中间白色区域是C源程序编辑区,我们可以在里面对C程序进行编写、修改等工作; 下方“输出”区域是程序的输出提示,用于显示错误信息和其他的编译信息等。 2.2 WinTC1.9.1集成开发环境集成开发环境2.2 WinTC1.9.1集成开发环境集成开发环境2.2.3.2使用使用C内嵌汇编内嵌汇编 使用C内嵌汇编,既可发挥汇编的高效性,又可以发挥C的易用性。在Win-TC中,你既不用记复杂的编译指令,也不用去额外找汇编器。你所需的就只要