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