C语言程序设计教程第二版.ppt
合集下载
C语言程序设计教程(第二版)第二版ppt课件(完整版)
[案例1.2] 由main()函数和1个max()函数构成的C语 言程序。
#include “stdio.h” #include “conio.h” void main( )
{ int num1, num2; printf(“Input the first integer number: ”); scanf(“%d”, &num1); printf(“Input the second integer number: ”); scanf(“%d”, &num2); printf(“max = %d\n”, max(num1, num2)); getch(); }
2022/1/12
17
[案例1.2]中的主函数main( ),也可写成如下格式:
……
void main() { int num1, num2; printf(“Input the first integer number: ”); scanf(“%d”, &num1); printf(“Input the second integer number: ”); scanf(“%d”, &num2); printf(“max=%d\n”, max(num1, num2)); }
21世纪高职高专新概念教材
• C语言程序设计教程(第二版)
2022/1/12
1
第1章 C语言概述
教学目的: 掌握C语言的程序结构,函数结构,源程 序书写规则,以及TC++3.0的基本操作。 了解C语言的特点和语句。
2022/1/12
2
教学内容: 1.1 发展简史和特点 1.2* 程序结构与函数结构 1.3* 源程序书写规则 1.4 C语言的语句 1.5* TC++3.0基本操作
#include “stdio.h” #include “conio.h” void main( )
{ int num1, num2; printf(“Input the first integer number: ”); scanf(“%d”, &num1); printf(“Input the second integer number: ”); scanf(“%d”, &num2); printf(“max = %d\n”, max(num1, num2)); getch(); }
2022/1/12
17
[案例1.2]中的主函数main( ),也可写成如下格式:
……
void main() { int num1, num2; printf(“Input the first integer number: ”); scanf(“%d”, &num1); printf(“Input the second integer number: ”); scanf(“%d”, &num2); printf(“max=%d\n”, max(num1, num2)); }
21世纪高职高专新概念教材
• C语言程序设计教程(第二版)
2022/1/12
1
第1章 C语言概述
教学目的: 掌握C语言的程序结构,函数结构,源程 序书写规则,以及TC++3.0的基本操作。 了解C语言的特点和语句。
2022/1/12
2
教学内容: 1.1 发展简史和特点 1.2* 程序结构与函数结构 1.3* 源程序书写规则 1.4 C语言的语句 1.5* TC++3.0基本操作
C语言程序设计(第2版)下ppt
对于C编译系统提供的库函数,是由编译系统 事先定义好的,对它们的定义已放在相关的头文件 中。程序设计者不必自已定义,只需用#include命 令把有关的头文件包含到本文件模块中即可。 17
7.2.2 定义函数
(1)定义无参函数的一般形式为: 类型标识符 函数名() { 声明部分 语句部分 }
18
(2)定义有参函数的一般形式为:
类型标识符 函数名(形式参数列表)
{
声明部分 例如:
语句部分int max(int x,int y)
}
{int z;/ *函数体中的声明部分*/
z=x>y?x∶y;
return(z);
}
19
(3)定义空函数的一般形式为:
类型标识符 函数名()
{}
例如:
主调函数调用空函数时,只表
dummy()明这里要调用一个函数,但函
10
说明:
2. 一个源程序文件由一个或多个函数以及其他 有关内容(如命令行、数据定义等)组成。一 个源程序文件是一个编译单位,在程序编译时 是以源程序文件为单位进行编译的,而不是以 函数为单位进行编译的。
11
说明:
3. C程序的执行是从main函数开始的,如果在 main函数中调用其他函数,在调用后流程返回到 main函数,在main函数中结束整个程序的运行。
•函数的声明的作用则是把函数的名字、函数类型 以及形参的类型、个数和顺序通知编译系统,以便
16
定义函数应包括以下几个内容:
1. 指定函数的名字,以便以后按名调用。
2. 指定函数的类型,即函数值的类型。
3. 指定函数的参数的名字和类型,以便在调用函数时 向它们传递数据。对无参函数不需要这项。
4. 指定函数应当完成什么操作,也就是函数是做什么 的,即函数的功能。这是最重要的,这是在函数体 中解决的。
7.2.2 定义函数
(1)定义无参函数的一般形式为: 类型标识符 函数名() { 声明部分 语句部分 }
18
(2)定义有参函数的一般形式为:
类型标识符 函数名(形式参数列表)
{
声明部分 例如:
语句部分int max(int x,int y)
}
{int z;/ *函数体中的声明部分*/
z=x>y?x∶y;
return(z);
}
19
(3)定义空函数的一般形式为:
类型标识符 函数名()
{}
例如:
主调函数调用空函数时,只表
dummy()明这里要调用一个函数,但函
10
说明:
2. 一个源程序文件由一个或多个函数以及其他 有关内容(如命令行、数据定义等)组成。一 个源程序文件是一个编译单位,在程序编译时 是以源程序文件为单位进行编译的,而不是以 函数为单位进行编译的。
11
说明:
3. C程序的执行是从main函数开始的,如果在 main函数中调用其他函数,在调用后流程返回到 main函数,在main函数中结束整个程序的运行。
•函数的声明的作用则是把函数的名字、函数类型 以及形参的类型、个数和顺序通知编译系统,以便
16
定义函数应包括以下几个内容:
1. 指定函数的名字,以便以后按名调用。
2. 指定函数的类型,即函数值的类型。
3. 指定函数的参数的名字和类型,以便在调用函数时 向它们传递数据。对无参函数不需要这项。
4. 指定函数应当完成什么操作,也就是函数是做什么 的,即函数的功能。这是最重要的,这是在函数体 中解决的。
C语言程序设计(第二版)课件第6章
6.2函数
❖ 运行结果:
main函数是主调函数,max是被调函数。其中x,y是实参,在数据传 递过程中x,y必须是确定的值。a,b是形参,用之前形参的数据类型 与实参相匹配。最后通过return语句返回a,b中较大值。
6.2函数
6.2.2 函数的声明
❖ 在本章例6.2中,如果被调函数的定义在main函数的后面,那么在 主函数main中需要对被调函数的进行声明。这种方式和变量相同, 先定义后使用。主要目的是使编译系统知道被调函数返回值类型, 以便在主调函数中对此类型的函数值作相应的处理。
❖ C程序的全部工作是由各种功能的函数完成的,C语言 称为函数式语言。采用函数模块式的结构,C语言实现 了结构化程序设计,使程序的层次结构清晰,方便程序 的编写、阅读、调试。
本章目录
6.1函数分类 6.2函数 6.3 函数调用 6.4函数和数组 6.5变量的作用域 6.6变量的存储类别 6.7内部函数和外部函数
其中第一,第二行对str函数和f函数预先作了说明。 因此在以后各 函数中无须对str和f函数再作说明就可直接调用。 ❖ 4. 对库函数的调用不需要再作说明, 但必须把该函数的头文件用 include命令包含在源文件前部。
6.2函数
❖ 6.2.3函数的参数
❖ 函数的参数分为形参和实参两种。 在本小节中,进一步介绍形参、 实参的特点和两者的关系。形参出现在函数定义中,在整个函数体 内都可使用,离开该函数不能使用。实参出现在主调函数中,进入 被调函数后,实参变量也不能使用。实参和形参之间的数据传递是 单项值传递,相当于实参的值复制到形参中,并且形参的任何变化 不影响实参。
6.1函数分类
C语言中可从不同的角度对函数分类。
❖ 1. 从函数定义的角度,函数分为库函数和用户定义函数。
C语言第2版(第2章基本语句)
(5)空类型:用void表示。
对整数型,有四种修饰:
①signed(有符号) ②unsigned(无符号)
③long(长型)
④short(短型)
数据类型决定了数据的大小、数据可执行的操作 以及数据的取值范围。
整理ppt1章 引言
8
2.2 基本数据类型及取值范围
数据类型的长度和取值范围会随着机器的CPU类型 和编译器的不同而不同。
命名。建议取有实际意义的标识符来命名。
标识符的第1个字符必须是字母或下划线,标识符的长度可以是一 个或多个字符,最长不允许超过32个字符。
例如:
score、number12、student_name等均为正确的标识符;
8times、price/tea、low!valume等均不为正确的标识符。
注意:
±1.112 537×10−308
最大值
±3.402 824×1038 ±1.797 693×10308
整理ppt1章 引言
7
2.2 基本数据类型及取值范围
1. C语言提供5种基本数据类型。
(1)字符型:用char表示。
(2)整数型:用int表示。
(3)单精度实数型:用float表示。
(4)双精度实数型:用double表示。
C 语言规定:变量必须在使用之前定义。
变量定义的一般形式是:
<类型名> <变量列表>;
∙<类型名>必须是有效的C数据类型,如:int、 float等,类型名规定了变量的存储空间和取值范围。
∙ <变量列表>可以由一个或多个由逗号分隔的多个 标识符名构成。
整理ppt1章 引言
12
2.3 标识符、变量和常量
C程序设计教程2精品PPT课件
double result = radius * radius * 3.14 * 4 ;
cout << “The result is “<< result << “ \n “;
}
11/29/2020
11
函数(过程)说明:
函数:把相关的程序语句放在一起,完成特 定的功能,并给这些语句起一个名字。
求解中需要通过函数调用来实施求解时,便 要对函数的性质进行说明,说明其返回类型, 参数类型,参数个数。
11/29/2020
4
变量定义
定义变量的目的:
创建一个所需大小的实体空间给变量名; 说明变量的表示范围; 说明变量可以进行的运算等。
11/29/2020
5
变量定义
例:int a = 12 ;
存储单元
变量由变量名、数据类型和 内存地址
(1Byte)
……
值三部分组成,是可寻址的,
也就是说,能够通过内存地
11/29/2020
13
函数定义是在函数声明的基础上,对整个实现过
程进行详细定义.
格式:
<返回类型><函数名>(<参数表>)
{
<若干条语句> return 函数的返回值;
} 例如: double area(double ra){
double s = ra*ra*3.14;
return s ;
}
11/29/2020
11/29/2020
3
要使用名称来存放数据,必须先说明名称
说明语句分为定义语句和声明语句:
定义语句:在说明名称的同时,还给名称分 配了存储空间
c语言设计(第二版)教学精品PPT课件
3)保留一个数的某些位(其他位 置0): 如,若保留a的从右数第3,4,5,7,8位 a=a&(0000 0000 1101 1100)2 =a&(0334)8
§12.1.2 按位或运算符(| ) (注意:|与||的区别)
运算规则: 0|0=0 , 0|1=1 , 1|0=1, 1|1=1
如:求060|017=? 00110000
︾ 二者可以统一如下表示:
a=a&~1
15个1 因为当系统为16位时,~1=11……10
31个1
§12.1.5 "左移"运算符(<<)
a<<n
功能: 将a的二进制数位依次左移n位,右边补零 如: a=15, a=a<<1; 15=(00001111)2 15<<1=(00011110)2=036=30 类似的: a=15, a=a<<2; 15<<2=(00111100)2=074=60 但是:a=128, a=a<<1; 128=(10000000)2 128<<1=(00000000)2=0 (出现溢出!!!) 很容易看出,当无溢出时:
如,一个取值为0,1的标志变量只需要1个数位; 存放黑白两色也只需要1个数位. 即使存放8种颜色也仅只需要3个数位.
3 利用按位运算可以非常方便的从一个字节中读取和写入一个或 几个数位上的数据.
§12.1 位运算符和位运算 (位:指的是二进制的位!!!)
C语言提供的六种位运算:
运算符 & |
含义 按位与 按位或
§12.1.3 "异或"运算符(^)
运算规则:
00=0, 01=1, 10=1, 11=0 即,相同取0 ,相异取1
§12.1.2 按位或运算符(| ) (注意:|与||的区别)
运算规则: 0|0=0 , 0|1=1 , 1|0=1, 1|1=1
如:求060|017=? 00110000
︾ 二者可以统一如下表示:
a=a&~1
15个1 因为当系统为16位时,~1=11……10
31个1
§12.1.5 "左移"运算符(<<)
a<<n
功能: 将a的二进制数位依次左移n位,右边补零 如: a=15, a=a<<1; 15=(00001111)2 15<<1=(00011110)2=036=30 类似的: a=15, a=a<<2; 15<<2=(00111100)2=074=60 但是:a=128, a=a<<1; 128=(10000000)2 128<<1=(00000000)2=0 (出现溢出!!!) 很容易看出,当无溢出时:
如,一个取值为0,1的标志变量只需要1个数位; 存放黑白两色也只需要1个数位. 即使存放8种颜色也仅只需要3个数位.
3 利用按位运算可以非常方便的从一个字节中读取和写入一个或 几个数位上的数据.
§12.1 位运算符和位运算 (位:指的是二进制的位!!!)
C语言提供的六种位运算:
运算符 & |
含义 按位与 按位或
§12.1.3 "异或"运算符(^)
运算规则:
00=0, 01=1, 10=1, 11=0 即,相同取0 ,相异取1
C语言程序设计2PPT课件
\ddd 3位8进制数代表的字Fra bibliotek \xhh含义 水平制表
退格 换页 反斜线 双引号 2位16进制数代表的字符
2020/11/13
《C与C++程序设计教程》-第二章
10
[例2.4]转义字符举例。 main() {
printf("\t Hello!"); printf("\n1234567890"); printf("\bHello!"); }
area=PI*radius*radius;
printf("circumference is %f\n",circum);
printf("area is %f\n",area);
}
键盘 3
circumference is 18.849556
显示器 area is 28.274334
返回
2020/11/13
《C与C++程序设计教程》-第二章
9
2.2.4 换码序列常量(转义字符)
是特殊字符常量。以一个反斜杠”\”开头的字符序列, 只代表某个特定的ASCII码字符。用单引号括起。
常见的转义字符常量表(p27表2.2) :
转义字符
\n
\v
\r
<
\0 \‘
含义 换行 垂直制表 回车 空字符 单引号
转义字符 \t \b \f \\ \“
2.2.1 数值常量 2.2.2 字符常量和字符串 2.2.3 标识符命名的常量 2.2.4 换码序列常量
2020/11/13
《C与C++程序设计教程》-第二章
返回
C语言程序设计第二版ppt课件(完整版)
程序=算法+数据结构+程序设计方法+语言环境
C语言的数据结构是以数据类型形式出现的。C的数据类型如下:
基本类型
整型int 字符型 char 实型(浮点型)
枚举类型enum
单精度型 float 双精度型 double
数据类型
构造类型
数组类型 结构体类型struct 共用体类型 union
指针类型 *
空类型void
个部分。在函数定义之外还可以包含一个说明部分,该说明部分叫
做外部说明等。
❖
详细讲解了上机过程及编译和运行环境。其中包括从编写好一
个C程序到完成运行的基本过程。包括启动、编辑、编译、连接、
执行和运行查看结果等步骤。
❖
Turbo C是一个集编辑、编译、连接、执行和调试于一体的语
言程序开发系统,使用非常方便。
#include <stdio.h> #define PI 3.14159 main() {
int r;
/*计算圆的面积*/
float s; scanf("%d",&r); s=PI*r*r; printf("s=%f\n",s); }
/*输入圆的半径*/ /*输出圆的面积的值*/
程序运行结果:
1.3 C程序的举例
成部分。 6. 主函数main()既可以放在max()函数之前,也可以放在max()函数之后。
习惯上,将主函数main()放在最前面。 7.C语言程序中所调用的函数,既可以是由系统提供的库函数,也可以是由设
计人员自己根据需要而设计的函数。例如,在例1.2中,printf()函数是C 语言编译系统库函数中的一个函数,它的作用是在屏幕上按指定格式输出 指定的内容;max()函数是由用户自己设计的函数,它的作用是计算两个 数中的较大值。
C语言程序设计教程(第2版)第5章PPT课件
f= w*0.313; else f= w*0.205; printf(“w=%f,f=%f\n’,w,f);
}
5.3.2 条件运算符
1.条件运算符与条件表达式
条件表达式的一般形式: 表达式1 ? 表达式2∶表达式3 如: (a>b) ? a : b
如:max= (a>b) ? a : b ; 若 a=3, b=2, 则 max=?
if 语句说明:
⑴ if后面的表达式一般为逻辑表达式或关系表 达式,也可以是任意数值类型表达式。
该语句是合法的:if(3) ⑵ if 语pri句ntf中(“的o“k!”语)句; ”为一个简单语句或复合语句。
如:下面程序段是否有错?
if (x>=0) popsirtiinvtef.(”“)X; is
与其它运算符优先级的比较:
! 算术运算符 关系运算符 && 和 || 赋值运算符
(高) 例如:c=d>a+b&&a>b
等效于: c=((d>(a+b))&&(a>b))
(低)
5.2.2 逻辑表达式
1. 什么是逻辑表达式?
用逻辑运算符将逻辑运算对象连结起来的式子。
如:(a>b)&&(b<c) 、!a||a>b
本章要点关系运算符与关系表达式逻辑运算符与逻辑表达式条件运算符与条件表达式if语句switch语句本章难点if语句的嵌套switch语句的使用51关系运算符和关系表达式小于小于或等于大于大于或等于等于
第5章 选择结构
本章要点 ➢关系运算符与关系表达式 ➢逻辑运算符与逻辑表达式 ➢条件运算符与条件表达式 ➢if语句 ➢switch语句 本章难点 ➢if语句的嵌套 ➢switch语句的使用
}
5.3.2 条件运算符
1.条件运算符与条件表达式
条件表达式的一般形式: 表达式1 ? 表达式2∶表达式3 如: (a>b) ? a : b
如:max= (a>b) ? a : b ; 若 a=3, b=2, 则 max=?
if 语句说明:
⑴ if后面的表达式一般为逻辑表达式或关系表 达式,也可以是任意数值类型表达式。
该语句是合法的:if(3) ⑵ if 语pri句ntf中(“的o“k!”语)句; ”为一个简单语句或复合语句。
如:下面程序段是否有错?
if (x>=0) popsirtiinvtef.(”“)X; is
与其它运算符优先级的比较:
! 算术运算符 关系运算符 && 和 || 赋值运算符
(高) 例如:c=d>a+b&&a>b
等效于: c=((d>(a+b))&&(a>b))
(低)
5.2.2 逻辑表达式
1. 什么是逻辑表达式?
用逻辑运算符将逻辑运算对象连结起来的式子。
如:(a>b)&&(b<c) 、!a||a>b
本章要点关系运算符与关系表达式逻辑运算符与逻辑表达式条件运算符与条件表达式if语句switch语句本章难点if语句的嵌套switch语句的使用51关系运算符和关系表达式小于小于或等于大于大于或等于等于
第5章 选择结构
本章要点 ➢关系运算符与关系表达式 ➢逻辑运算符与逻辑表达式 ➢条件运算符与条件表达式 ➢if语句 ➢switch语句 本章难点 ➢if语句的嵌套 ➢switch语句的使用
C语言程序设计教程(第2版)中ppt
}
6.3.2 三种循环语句的总结
⑴三种循环语句共同的特点是:当循环控制条件非 零时,执行循环体语句,否则终止循环。
⑵语句可以是任何语句,简单语句、复合语句、空 语句均可以。
⑶while和for语句先判断循环控制条件,do-while语句 后判断循环控制条件,所以,while和for语句的循环体 可能一次也不执行,而do-while语句的循环体至少也要 执行一次。
输入:9↙ 输入:11↙ 输出:90 输出:1112
比较上面两个程序,虽然结构是相同的,在 输入值为有效值时结果相同,但当输入无效值时 输出结果是不同的。为什么?
while与do-while的主要区别:
while语句进入循环体之前,测试循环条件, 表达式必须为真,否则while循环不进入循环体, 即循环体可能一次也不执行。
while (i<=10)
{ sum=sum*i;
sum=1*2*3*4*5*6*7*8*9*10;
i++;
}
printf(“10!=%ld\n”,sum); sum
}
3
循环结构的特点是: 程序的流程是在给定条件时,反复执行某程
序段。
C语言中可以用以下语句来实现循环: ⑴ 用goto语句和 if 语句构成循环; ⑵用while语句; ⑶用do-while语句; ⑷用for语句。
C语言程序设计教程(第2版) 中
1
第6章 循环结构程序设计
本章要点
➢while语句
➢do-while语句
➢for语句
➢break语句和continue语句在循环体中的作用
➢循环结构的嵌套
本章难点
➢循环结构的嵌套
➢能够熟练地使用循环语句进行程序设计
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
fputs(str,fp)
str:为指向字符串的指针或字符数组 功能: 该函数将str所指向的字符串活字符串常量输 出到指定的文件中,但不包括字符串结束符 当操作成功时,函数的返回值为0,否则为一个非0值(tc中)
(2)fgets函数
fgets(str,n,fp);
功能: 从指定的文件中读入n个字符,存放到str中,并 加‘\0’,函数的返回值为str的地址
➢ 系统将键盘、显示器处理为标准设备文件。 ➢ C系统对文件的处理采用缓冲文件系统
12.2、文件类型指针
• 每个被使用的文件都在内存中开辟了一个区,用来存放该文 件的信息。
• 文件的信息保存在一个名为FILE的结构体类型的变量中。该 结构体类型由系统定义
• 定义文件型指针变量: FILE * 指针变量名
例如12.5 用fread()函数和fwrite()函数修改【例12.4】。
#include "stdio.h" #define SIZE 3 struct student { int num; char name[10]; int score; }std[SIZE]; main( ) { int i;
exit(0); } ch=getchar(); while(ch!=’$’) { fputc(ch,fout);/*将字符变量ch的值输出到文件中*/ putchar(ch); /* 将字符变量ch的值输出到屏幕*/
ch=getchar( ); } fclose(fout);/* 关闭文件*/ }
exit(0); } while(strlen(gets(str))>0)
/* 从键盘读入的字符串长度大于0时,执行循环*/ { fputs(str,fp); /*将字符串写入文件*/
fputs("\n",fp);/*将换行符写入文件*/ } fclose(fp); }
12.4.3、fprintf、fscanf函数:读写一组数据
符串,并将它们原样存到名为file1.txt文件中。
#include"stdio.h" main( ) { FILE *fout; /*定义文件指针*/
char ch; if((fout=fopen(“file1.txt”,"w"))==NULL) /*为写打开文件*/ { printf("can not open file\n");
12.3 打开、关闭和检测文件
3、检测文件
(3)清除错误标志和文件结束标志函数(clearerr()函数) clearerr(文件指针) ;
功能:用于清除文件指针所指向的文件的出错标志和文 件结束标志,使它们的值为0。假设在调用一个输入函数时 出现错误,这时ferror()函数值为一个非零值,在调用 clearerr()函数后,ferror()函数值变为0值。
如: 顺序读入磁盘文件中的字符并输出
对于文本文件:
ch=fgetc(fp); while(ch!=EOF)
{ putchar(ch); ch=fgetc(fp);
}
对于二进制文件:
while(!feof())
{ ch=fgetc(fp); putchar(ch);
}
例如12.1 编写程序,从键盘输入一个以“$”结尾的字
返回值是相对于文件开头的位移量(字节数),如果 函数返回值为-1L,表示出错。例如:
k=ftell(fp); if(k==-1L) prinif("error"); 变量k存放位置指针的当前位置。
2、关闭(fclose函数) fclose(文件指针)
12.3 打开、关闭和检测文件
3、检测文件
(1) 检测文件是否结束函数(feof()函数) feof(文件指针);
功能:检测“文件指针”所指向文件中的位置指针 是否处于文件结束位置,如果feof()函数返回值为0, 表示文件未结束(即文件的位置指针没有指到文件末 尾)。如果返回一个非零值,表示文件结束(即文件 的位置指针已经指到文件末尾)。
使用文件的方式详见表12.1 fopen函数是一个返回指针值的函数 当返回值是NULL时,表示无法打开该文件
常采用下列方式打开一个文件: if ((fp=fopen(“file1”,”r”)==NULL)
{ printf(”can’t open this file \n”) exit(0); /* 关闭文件函数 */ }
12.5 文件的定位
12.5.1 rewind()函数 rewind(文件指针); 功能:将文件的位置指针置于文件的开头。此函数没
有返回值。 12.5.2 fseek()函数和随机读写
fseek(文件类型指针,位移量,起始点)。 功能:移动文件的位置指针到指定的位置上,随后的 读写操作将从此位置开始。利用fseek()函数可以实现文件 的随机读写。
【例12.3】将从键盘上输入的若干行字符输出到磁盘文件中。
#include "stdio.h" #include "string.h" main( ) { FILE *fp;
char str[80]; if((fp=fopen("lx.txt", "w"))==NULL) { printf("File can not opened\n");
12.3 打开、关闭和检测文件
3、检测文件
(2)检测错误函数(ferror()函数) ferror(文件指针);
功能:检测对文件指针所指向的文件在用各种输入、输 出函数进行读写时是否发生了错误,如果ferror()函数返回 值为0,表示未出错;如果返回一个非零值,表示出错。在 执行fopen()函数时,ferror()函数的初始值自动置为0。
FILE *fout; if((fout=fopen("stud.bxt","wb"))==NULL) { printf("can not open file\n");
exit(0); } for(i=0;i<SIZE;i++= {scanf("%d%s%d",&std[i].num,std[i].name,&std[i].score) ; fwrite(&std[i],sizeof(struct student),1,fout); } fclose(fout); }
【例12.6】 在磁盘文件(ss.bxt)上存有10个实型数据。 编写程序将第1、3、5、7、9个数据输入到计算机,并 在屏幕上显示出来。
#include "stdio.h" main( ) { int i;float d[10];
FILE *fp; if((fp=fopen(“ss.bxt”,"rb"))==NULL) { printf("cannot open file\n");
例如12.2编写程序读入【例12.1】生成的文本文件
file1.txt,并将文件内容原样输出到显示屏上。
#include "stdio.h" main( ) { FILE *fin; /*定义文件指针*/
char ch; if((fin=fopen(“file1.txt”,"r"))==NULL) /*为读打开文件*/ { printf("can not open infile\n");
第12章 文件
C语言文件。 文件类型指针。
打开、关闭和检测文件
文件的输入和输出 文件的定位
12.1、C语言文件
➢ 文件: 存储在外部介质上的、可由计算机识别的 一组相关数据的集合。
➢ C程序文件,是一个字符序列。
➢ 按文件中数据的组织形式(即代码存放形式)可分为
两种文件:
▪ ASCII文本文件:采用ACSII代码存储方式,每个字符占 一个字节,存储其对应的ASCII码. ▪ 二进制文件:采用C规定的内存数据的存储方式
exit(0); } while(!feof(fin)) /*当没有到文件末尾时执行循环*/ { ch=fgetc(fin); /*从文件中读一个字符*/
putchar(ch); /* 将字符变量ch的值输出到屏幕*/ }
fc1ose(fin);/* 关闭文件*/ }
12.4.2、fputs,fgets函数:读写一个字符串 (1)fputs函数
如: FILE * fp; fp:将指向某个文件的结构体变量
C规定了三个标准设备文件指针,无需再定义。 stdin:标准输入文件(键盘) stdout:标准输出文件(显示器) stderr:标准错误输出文件(显示器)
12.3 打开、关闭和检测文件
1、打开文件(fopen 函数)
FILE *FP; fp=fopen(文件名,使用文件方式)
exit(0); } for(i=0;i<10;i+=2) { fread(&d[i],4,1,fp);
printf("%8.2f\n", d[i]); fseek(fp,4L,1);/*将位置指针移到离当前位置4个字节处 */ } fclose(fp); }
12.5 文件的定位
12.5.3 ftell()函数 ftell(文件指针); 功能:获得文件位置指针的当前位置。fte11()函数
名和成绩,并将它们存放到磁盘文件stud.txt中。
#include "stdio.h" #define SIZE 3 main( ) { int i,num;
char name[10]; float score; FILE *fout; if((fout=fopen("stuห้องสมุดไป่ตู้.txt","w"))==NULL) { printf("can not open file\n");
12.4、文件的输入和输出
12.4.1、fputc,fgetc函数 (1)fputc函数:把一个字符写到文件中
fputc(ch,fp) ch:为待输出的字符 fputc函数的返回值:当输出成功时为ch的值
当输出不成功时为EOF即 -1。
str:为指向字符串的指针或字符数组 功能: 该函数将str所指向的字符串活字符串常量输 出到指定的文件中,但不包括字符串结束符 当操作成功时,函数的返回值为0,否则为一个非0值(tc中)
(2)fgets函数
fgets(str,n,fp);
功能: 从指定的文件中读入n个字符,存放到str中,并 加‘\0’,函数的返回值为str的地址
➢ 系统将键盘、显示器处理为标准设备文件。 ➢ C系统对文件的处理采用缓冲文件系统
12.2、文件类型指针
• 每个被使用的文件都在内存中开辟了一个区,用来存放该文 件的信息。
• 文件的信息保存在一个名为FILE的结构体类型的变量中。该 结构体类型由系统定义
• 定义文件型指针变量: FILE * 指针变量名
例如12.5 用fread()函数和fwrite()函数修改【例12.4】。
#include "stdio.h" #define SIZE 3 struct student { int num; char name[10]; int score; }std[SIZE]; main( ) { int i;
exit(0); } ch=getchar(); while(ch!=’$’) { fputc(ch,fout);/*将字符变量ch的值输出到文件中*/ putchar(ch); /* 将字符变量ch的值输出到屏幕*/
ch=getchar( ); } fclose(fout);/* 关闭文件*/ }
exit(0); } while(strlen(gets(str))>0)
/* 从键盘读入的字符串长度大于0时,执行循环*/ { fputs(str,fp); /*将字符串写入文件*/
fputs("\n",fp);/*将换行符写入文件*/ } fclose(fp); }
12.4.3、fprintf、fscanf函数:读写一组数据
符串,并将它们原样存到名为file1.txt文件中。
#include"stdio.h" main( ) { FILE *fout; /*定义文件指针*/
char ch; if((fout=fopen(“file1.txt”,"w"))==NULL) /*为写打开文件*/ { printf("can not open file\n");
12.3 打开、关闭和检测文件
3、检测文件
(3)清除错误标志和文件结束标志函数(clearerr()函数) clearerr(文件指针) ;
功能:用于清除文件指针所指向的文件的出错标志和文 件结束标志,使它们的值为0。假设在调用一个输入函数时 出现错误,这时ferror()函数值为一个非零值,在调用 clearerr()函数后,ferror()函数值变为0值。
如: 顺序读入磁盘文件中的字符并输出
对于文本文件:
ch=fgetc(fp); while(ch!=EOF)
{ putchar(ch); ch=fgetc(fp);
}
对于二进制文件:
while(!feof())
{ ch=fgetc(fp); putchar(ch);
}
例如12.1 编写程序,从键盘输入一个以“$”结尾的字
返回值是相对于文件开头的位移量(字节数),如果 函数返回值为-1L,表示出错。例如:
k=ftell(fp); if(k==-1L) prinif("error"); 变量k存放位置指针的当前位置。
2、关闭(fclose函数) fclose(文件指针)
12.3 打开、关闭和检测文件
3、检测文件
(1) 检测文件是否结束函数(feof()函数) feof(文件指针);
功能:检测“文件指针”所指向文件中的位置指针 是否处于文件结束位置,如果feof()函数返回值为0, 表示文件未结束(即文件的位置指针没有指到文件末 尾)。如果返回一个非零值,表示文件结束(即文件 的位置指针已经指到文件末尾)。
使用文件的方式详见表12.1 fopen函数是一个返回指针值的函数 当返回值是NULL时,表示无法打开该文件
常采用下列方式打开一个文件: if ((fp=fopen(“file1”,”r”)==NULL)
{ printf(”can’t open this file \n”) exit(0); /* 关闭文件函数 */ }
12.5 文件的定位
12.5.1 rewind()函数 rewind(文件指针); 功能:将文件的位置指针置于文件的开头。此函数没
有返回值。 12.5.2 fseek()函数和随机读写
fseek(文件类型指针,位移量,起始点)。 功能:移动文件的位置指针到指定的位置上,随后的 读写操作将从此位置开始。利用fseek()函数可以实现文件 的随机读写。
【例12.3】将从键盘上输入的若干行字符输出到磁盘文件中。
#include "stdio.h" #include "string.h" main( ) { FILE *fp;
char str[80]; if((fp=fopen("lx.txt", "w"))==NULL) { printf("File can not opened\n");
12.3 打开、关闭和检测文件
3、检测文件
(2)检测错误函数(ferror()函数) ferror(文件指针);
功能:检测对文件指针所指向的文件在用各种输入、输 出函数进行读写时是否发生了错误,如果ferror()函数返回 值为0,表示未出错;如果返回一个非零值,表示出错。在 执行fopen()函数时,ferror()函数的初始值自动置为0。
FILE *fout; if((fout=fopen("stud.bxt","wb"))==NULL) { printf("can not open file\n");
exit(0); } for(i=0;i<SIZE;i++= {scanf("%d%s%d",&std[i].num,std[i].name,&std[i].score) ; fwrite(&std[i],sizeof(struct student),1,fout); } fclose(fout); }
【例12.6】 在磁盘文件(ss.bxt)上存有10个实型数据。 编写程序将第1、3、5、7、9个数据输入到计算机,并 在屏幕上显示出来。
#include "stdio.h" main( ) { int i;float d[10];
FILE *fp; if((fp=fopen(“ss.bxt”,"rb"))==NULL) { printf("cannot open file\n");
例如12.2编写程序读入【例12.1】生成的文本文件
file1.txt,并将文件内容原样输出到显示屏上。
#include "stdio.h" main( ) { FILE *fin; /*定义文件指针*/
char ch; if((fin=fopen(“file1.txt”,"r"))==NULL) /*为读打开文件*/ { printf("can not open infile\n");
第12章 文件
C语言文件。 文件类型指针。
打开、关闭和检测文件
文件的输入和输出 文件的定位
12.1、C语言文件
➢ 文件: 存储在外部介质上的、可由计算机识别的 一组相关数据的集合。
➢ C程序文件,是一个字符序列。
➢ 按文件中数据的组织形式(即代码存放形式)可分为
两种文件:
▪ ASCII文本文件:采用ACSII代码存储方式,每个字符占 一个字节,存储其对应的ASCII码. ▪ 二进制文件:采用C规定的内存数据的存储方式
exit(0); } while(!feof(fin)) /*当没有到文件末尾时执行循环*/ { ch=fgetc(fin); /*从文件中读一个字符*/
putchar(ch); /* 将字符变量ch的值输出到屏幕*/ }
fc1ose(fin);/* 关闭文件*/ }
12.4.2、fputs,fgets函数:读写一个字符串 (1)fputs函数
如: FILE * fp; fp:将指向某个文件的结构体变量
C规定了三个标准设备文件指针,无需再定义。 stdin:标准输入文件(键盘) stdout:标准输出文件(显示器) stderr:标准错误输出文件(显示器)
12.3 打开、关闭和检测文件
1、打开文件(fopen 函数)
FILE *FP; fp=fopen(文件名,使用文件方式)
exit(0); } for(i=0;i<10;i+=2) { fread(&d[i],4,1,fp);
printf("%8.2f\n", d[i]); fseek(fp,4L,1);/*将位置指针移到离当前位置4个字节处 */ } fclose(fp); }
12.5 文件的定位
12.5.3 ftell()函数 ftell(文件指针); 功能:获得文件位置指针的当前位置。fte11()函数
名和成绩,并将它们存放到磁盘文件stud.txt中。
#include "stdio.h" #define SIZE 3 main( ) { int i,num;
char name[10]; float score; FILE *fout; if((fout=fopen("stuห้องสมุดไป่ตู้.txt","w"))==NULL) { printf("can not open file\n");
12.4、文件的输入和输出
12.4.1、fputc,fgetc函数 (1)fputc函数:把一个字符写到文件中
fputc(ch,fp) ch:为待输出的字符 fputc函数的返回值:当输出成功时为ch的值
当输出不成功时为EOF即 -1。