最新c语言程序设计第10章课件

元素的个数可以省略,根据赋初值时 结构体常量的个数确定数组元素的个数
2020/10/19
9.1 结构体
11
9.1.2 结构体变量的定义与初始化
3. 结构体变量的运算
用sizeof运算符计算结构体变量所占内存空间
struct date { int year, month, day;}; struct student { char num[8], name[20], sex;
6
结构体类型与变量的说明
st类ru型ct与da变te量是不同的概念。
{ i➢nt应y先ea定r,m义o一n个th结,d构ay体;}类; 型n,u而m后再定义结构体8个变字量节。
str➢u系ct统st对ud类e型nt不分配空间,n仅am对e变量分配空间。30个字节
{ c➢h只ar能n对um变[量8]赋; 值、存取或s运ex算,而不能对一个1个类字型节
2020/10/19
9.1 结构体
3
9.1.1 结构体与结构体类型的定义 结构体类型定义的一般形式:
struct 结构体名 { 数据类型1 成员名1;
数据类型2 成员名2; ……
数据类型n 成员名n; };
struct为关键字;
结构体名是用户定义 的类型标识。
{ }中是组成该结构体 的成员。成员的数据 类型可以是C语言所允 许的任何数据类型。
chaarrasuetxh;or[30]; /*/*作性者别是是字字符符数型组类*/型*/
cinhtaragpeu;blisher[60]/;* /年*出龄版是社整是型字*符/ 数组类型*/
fclhoaart pardicder;[60]; int score[6]; }i;nt n;
/* /*
成住//**价绩址库格是是存是整字量单型符是精数数整度组组型实类类*/型型型***///
{ 成员定义表; }变量名表; 例如:
struct { char num[8],name[20],sex;
int age; float score; }st[30], a, b, c;
8
2020/10/19
9.1 结构体
9
9.1.2 结构体变量的定义与初始化
2. 结构体变量的初始化
【例9.4】结构体变量的初始化。
struct date
如果初值个数少于结构体成员个数,
{ int year, month则, 将da无y;初};值对应的成员赋以0值。
struct student
如果初值个数多于结构体成员个数,
则编译出错。
{ char num[8], name[20], sex;
struct date birthday;
成in员t s名co可re[与6]程; 序中的变量ad名dr相同时,也可6与0个不字节
}同; 结构体类型的成员名相sc同or,e 二者代表不1同2个的字节
对象。
2020/10/19
9.1 结构体
9.1.2 结构体变量的定义与初始化
1. 结构体类型变量的定义
在定义结构体类型的同时定义变量 struct 结构体名
c语言程序设计第10章课件
9.1 结构体
2
9.1.1 结构体与结构体类型的定义
信息管理
一个学生的信息有学号、姓名、性别、年龄、住 址、成绩等。
一本图书的信息有分类编号、书名、作者、出版社、 出版日期、价格、库存量等。
如何描述这些类型不同的相关数据?
结构体——一种构造类型数据 结构体由若干不同类型的数据项组成, 构成结构体的各个数据项称为结构体成员。
ch赋ar值n、am存e取[3或0]运; 算。
year 2个字节
成对地cscthh员 位结raaurr也相构ctsaed可当中dxda;以于的rte[6是成 普b0i]r结员通;th构,变da可变量y;量以。/*单。b成i独rt员h使d为a用y结,md构a它oy体n的th类作22型用个个字字与*/节节
{ 成员定义表; }变量名表; 例如:
struct student { char num[8],name[20],sex;
int age; float score; }st[30];
7
2020/10/19
9.1 结构体
9.1.2 结构体变量的定义与初始化
1. 结构体类型变量的定义
直接定义结构体类型变量 struct
};
2020/10/19
9.1 结构体
5
9.1.2 结构体变量的定义与初始化
1. 结构体类型变量的定义
struct student
利用已定义的结构体类型名定义nu变m量 8个字节
struct 结构体名 变量ard book1[100]; struct student s[30], t1, t2;
name sex age addr score
30个字节 1个字节 2个字节 60个字节 12个字节
按照结构体类型的组成,系统为定义的结构体
变量分配内存单元。结构体变量的各个成员在内存
中占用连续存储区域,结构体变量所占内存大小为
结构体中每个成员所占用内存的长度之和。
2020/10/19
9.1 结构体
float score;
}a={"9606011","Li ming",'M',{1977,12,9},83},
b={"9608025","Zhang liming",'F',{1978,5,10},87},c;
2020/10/19
9.1 结构体
10
9.1.2 结构体变量的定义与初始化
2. 结构体变量的初始化
【例9.5】结构体数组的初始化。 struct s { char num[8],name[20],sex; float score; }stu[3]={{"9606011","Li ming",'M',87.5}, {"9606012","Zhang jiangguo",'M',79}, {"9606013","Wang ping",'F',90}};
2020/10/19
9.1 结构体
4
9.1.1 结构体与结构体类型的定义
例如图书类型的定义:
s例tru如ct学bo生ok类ca型rd的定义:
struct student {{ cchhaarr nnuumm[[180];];
//**图学书号分是类字编符号数是组字类符型数*组/ 类型*/
cchhaarrnnaammee[3[300];]; //**书姓名名是是字字符符数数组组类类型型*/*/
合集下载

C语言从入门到精通 第10章ppt课件

C语言从入门到精通 第10章ppt课件
enum color c1, c2;
或enum color {red,yellow,blue,white,black} c1,c2;
或enum {red, yellow, blue, white, black} c1,c2;
➢枚举类型数据可以进行赋值运算。枚举类型是有序 类型, 枚举类型数据还可以进行关系运算。枚举类型 数据的比较转化成对序号进行比较, 只有同一种枚举 类型的数据才能进行比较。
在定义枚举类型时,程序员可在枚举数据时通过“=”号 自己规定序号,并影响后面的枚举数据的序号,后继序号以此 递增。例如:
enum status {copy=6, delete};
则copy的序号为6, delete的序号为7。 最新课件
上一页下24 一页
第10章 共用体与枚举类型
2. 枚举类型变量的定义 (1) 先定义枚举类型, 再定义枚举类型变量: enum 标识符 {枚举数据表}; enum 标识符 变量表; (2) 在定义枚举类型的同时定义枚举类型变量:
union icf {int i; char c; float f; };
最新课件
上一页下3 一页
第10章 共用体与枚举类型
2 共用体变量的定义 (1) 先定义共用体类型, 再定义共用体变量: ① union {成员表}; ② union 共用体名 变量表;
例如:union data { int i; char ch; float f; }; union data a最,新b课,c件;
最新课件
上一页下21 一页
第10章 共用体与枚举类型
例如
(1) 定义枚举类型status, 包含复制与删除两种状态: enum status {copy, delete}; 枚举类型status仅有两个数据,一个是copy,一

C语言程序设计教程课件第10章

C语言程序设计教程课件第10章

k。
如果是循环右移,则先将m右移n位(即将原数的高k- n位移到低位),再将m左移k-n位(即将原数的低n位移到 高位),然后将它们作按位或运算(即将它们合并)。 如果是循环左移,则先将m左移n位(即将原数的低k- n位移到高位),再将m右移k-n位(即将原数的高n位移到 低位),然后将它们作按位或运算(即将它们合并)。
(5)位段可以在一般的表达式中被引用,并被自动转 换为相应的整数。
10.3 程序举例
例10.3 编写一个C程序,其功能是:从键盘输入一个
无符号整数m以及位移位数n,当n>0时,将m循环右 移n位;当n<0时,将m循环左移|n|位。
将一个无符号整数m循环移n位的方法如下: 首先用sizeof函数确定一个无符号整数所占的二进制位数
3.“按位异或”运算符(^) “按位异或”的运算符为“^” 。其运算规则是:若两个 运算对象的对应二进制位不相等,则结果的对应位是1,否 则为0。 “按位异或”运算具有以下几个性质: (1)使数据中的某些位取反,即将0变为1,1变为0。 (2)同一个数据进行异或运算后,其结果为0。利用异或 运算的这个性质,可以将变量清零。 (3)可以实现交换两个变量的值:
6.“右移”运算符(>>)
“右移”运算符为“>>”。其运算规则是:将运算对象中 的每个二进制位向右移动若干位,从右边移出去的低位部分 被丢弃。但左边空出的高位部分是补0还是补1,要视下列具 体情况而定: 若右移对象为无符号整型数,则右移后左边空出的高位 部分补0。 若右移对象为一般整型数或字符型数据,当该数据的最 高位为0(对于一般整型来说即为正数),则右移后左边空 出的高位部分补0。当该数据的最高位为1(对于一般整型来 说即为正数),则与使用的计算机系统有关,有的计算机系 统将右移后左边空出的高位部分补1,称为“算术右移”; 有的计算机系统将右移后左边空出的高位部分补0,称为“ 逻辑右移”。

谭浩强C语言程序设计课件完整版第10章

谭浩强C语言程序设计课件完整版第10章

10.3文件的读写
fputc(c,fp2); fclose(fp1); fclose(fp2); } system("cls"); printf("abc.txt:\n"); system("type abc.txt"); printf("\n\nxyz.txt:\n"); system("type xyz.txt"); */ } 运行结果如下:
10.2文件的打开与关闭
即先检查打开的操作有否出错,如果有错就在终端上输出 “cannot open this file”。Exit函数的作用是关闭所有文件,终 止正在调用的过程。待用户检查出错,修改后在运行。 2.文件的关闭(fclose函数) 使用完一个文件之后应该尽快关闭,以免数据丢失。 关闭一个文件使用fclose()函数实现,其格式如下: Fclose(文件指针) 文件指针:指明要关闭哪个文件,作为参数的文件指针必须是由打 开文件函数fopen()得到的。 例如: #include<stdio.h> main() { FILE *fp; … if(fp=fopen(“abc.txt,”“r”))==0) /*尝试打开文件*/
/* 调用DOS命令输出源文件内容*/ /* 调用DOS命令输出目标文件内容
10.3文件的读写
10.3.2 fgets()函数和fputs()函数
以字符为单位的fgetc()函数和fputc()函数一次只能读出或写入一个字 符到文件中,显然处理大量数据时效率不高,以字符串为单位的fgets()函 数和fputs()函数可以一次从文件输入或向文件输出一个字符串。 1.fgets ()函数 fgets()是从文件而不是从标准输入设备取得字符串。其格式如下: fgets(字符串指针,字符个数,文件指针); 其中第一个参数“字符串指针”,即一个字符组名或指向字符的指针, 用于存放读出的字符串;第二个参数指明读出多少个字符,是一个整型数; 第三个参数即目标文件的文件指针。 fgets()在遇到换行符或文件结束符时,即使已读取得字符数小于参数 中指定的数量也会自动停止。如程序设计者已经知道abc.txt文件不大于 100个字节,调用fgets()函数的第二个参数为100,使得整个文件被一次 读取。若abc.txt文件大于100字节,则后面的内容没有被读取。如果 fgets()读取到文件结束符,将会返回一个NULL值。可以据此判断是否到 达文件尾部,使用循环语句读出整个文件。若目标文件的结构不清晰,一 般使用fgetc()函数逐个字符读取,逐个处理。在预先知道目标文件结构的 情况下,使用fgets()函数能提高效率。

C语言程序设计第四版PPT-谭浩强

C语言程序设计第四版PPT-谭浩强

文件f2的 文件信息区
文件f3的 文件信息区
文件的基本知识——文件的操作 写文件:打开-写-关闭 读文件:打开-读-关闭
文件的打开
功能:为文件建立相应的信息区(存放 文件信息)和文件缓冲区(暂时存放输入 输出的数据) 函数: fopen(文件名,使用文件方式); 例: fopen("a1.dat","r");
第10章 文件
本章内容
10.1 文件的基本知识 10.2 打开与关闭文件 10.3 顺序读写数据文件 10.4 随机读写数据文件 10.5 文件读写的出错检测
文件的基本知识——输入输出
之前各章中处理的数据 ➢输入:键盘->内存 ➢输出:内存->显示器 实际上也可能是 ➢输入:外部设备->内存(读文件) ➢输出:内存->外部设备(写文件) 操作系统把各种设备都统一作为文件处理
文件
顺序文件的读写——读写字符串
例10.3 从键盘输入3个字符串,排序,把排
序后的字符串写入文件(P.342-343) 读上面写好的文件(P.344)
顺序文件的读写——格式化读写
fprintf(文件指针,格式字符串,输出表列); fscanf (文件指针,格式字符串,输入表列);
例: fprintf (fp,"%d,%6.2f",i,f); fscanf (fp,"%d,%f",&i,&f);
用文件扩展名”
文件的基本知识——流式文件
C语言把文件看作是字符(或字 节)的序列。
文件以“流”的形式在程序与操 作系统间流动。
文件的基本知识——数据的形式
根据数据的组织形式,数据文件可分为 ASCII文件:数据逐个字符的ASCII码 输出到外存,也称文本文件 二进制文件:内存中二进制形式的数据 直接输出到外存

《C语言程序设计教程》PPT课件

《C语言程序设计教程》PPT课件
② 标准输出文件,文件指针为stdout,系统指定为 显示器。
③ 标准错误输出文件,文件指针为stderr,系统指 定为显示器,输出错误信息。
10.1 文件的概述
11
10.1.2 文件的打开与关闭
操作文件的一般步骤
打开文件 读写文件 关闭文件 打开量文的件函C:语数建配言,立一的用用个输于户文入完程件输成序缓出对与冲函数文区数据件。库文的中件联提的系供建,了立为大、文件分 读写数文据件的:读是写指、对数文据件的的追读加、等写操、作追。加和定位操作。 关闭文件在:程切序断中文调件用与这程些序函的数联时系,,必释须放先文用件缓冲
}
FFIILLE;E *文件指针变量/名* ;This is the FILE object */
10.1 文件的概述
10
10.1.1 文件和文件指针
4. 标准文件
标准文件是外部设备中的三个特殊的设备文件。它们 的文件指针是系统定义的,并由系统自动打开和关闭。这 三个标准文件分别是:
① 标准输入文件,文件指针为stdin,系统指定为 键盘。
include命区令。包含stdio.h文件。
10.1 文件的概述
12
10.1.2 文件的打开与关闭
1. 文件打开函数fopen( )
常用的调用形式: FILE *fp; fp = fopen(文件名, 文件使用方式); 文件名:需要打开的文件名称(字符串)。 文件使用方式:是具有特定含义的符号。
缓冲区cha地r 址和大小f等d; 。 /* File descriptor
*/
FILE在类usnhCso型语irgt是n言ed系中ch统a,r定无hb义os论li的dz;e对;,磁包//**盘含UBnu文g在fefte件scrtcs还dhiazi是reo.i设fh头n备o 文b文uf件*f件/er中*/

C语言程序设计课件第10章

C语言程序设计课件第10章

10 文件
10
第10章 文件
通过本章的学习掌握磁盘文件中数据载入 方法和信息保存方法,能够对学生成绩管 理系统进一步完善。
第1章 C语言程序设计基础
知识目标
理解文件的概念 掌握文件的基本操作 掌握文本文件和二进制文件的读写 方法 掌握文件的定位方法
技能目标
学会使用文件进行数据的存储及处 理 能够用文件完善学生成绩管理系统
10.2 文件的读写
10.2.1 文本文件的读写
C语言提供以字符方式读写文件的函数有: • 写字符函数 int fputc(char ch, FILE *fp) • 读字符函数 int fgetc(FILE *fp) • 写字符串函数int fputs(char *string,FILE *fp) • 读字符串函数char *fgets(char *string,int n,FILE *fp)
10.1 文件的基本概念
10.1.1 文件的概念及文件类型
2.文件类型 (1)按文件的逻辑结构
记录文件:由具有一定结构的记录组成(定长和不定长)。 流式文件:由一个个字符(字节)数据顺序组成。 (2)按存储介质: 普通文件:存储介质文件(磁盘、磁带等) 设备文件:非存储介质(键盘、显示器、打印机等)
10.1.1 文件的概念及文件类型
5.文件的定义 一般情况下,要使用一个文件,系统将在内存中为这一文件开辟一个“文 件信息区”,用来存放文件的有关信息,如文件当前的读写位置、缓冲区 中未被处理的字符数、文件操作方式、下一个字符的位置、文件缓冲区 的位置等。这些信息保存在一个结构体中,该结构体由系统定义的,定 义在stdio.h的头文件中。Visual C++6.0系统中具体定义形式为:

《C程序设计》课件第10章


在C语言中文件的含义更为广泛,不仅包含以上所述 的磁盘文件,还包括一切能进行输入/输出的终端设备,它 们被看成是设备文件。如键盘常称为标准输入文件,显示 器称为标准输出文件。
文件是由磁盘文件和设备文件组成的。作为磁盘文件 之一的数据文件是本章学习的主要对象。
根据文件内数据的组织形式, 文件可分为文本(text) 文件和二进制文件。 文本文件又称为ASCII码文件, 这种文件在磁盘中存放时每个字节存放一个字符的ASCII 码。 ASCII码文件可在屏幕上按字符显示, 文件的内容可 以通过编辑程序(如记事本等)进行建立和修改, 人们能读 懂文件内容。 但是ASCII码文件所占存储空间较多, 处理 时要花费转换时间(内存中的二进制形式与ASCII码之间的 转换)。
typedef struct
{
short
level; /* 缓冲区“满”或“空”的程
度 */
unsigned flags; /* 文件状态标志 */
char
fd; /* 文件描述符 */
unsigned char hold; /* 如无缓冲区不读取字符 */
short
bsize; /* 缓冲区的大小 */
缓冲文件系统中,关键的概念是文件指针。
通常,由于文件中的数据很多,因此读/写时应该指明 对哪个数据进行操作。流式文件中采用的方法是设立一个 专门用来存放文件读/写位置的变量,称为当前工作指针。 在对某文件开始进行操作时,将当前工作指针的值设置为 0,表示文件从头开始读(写); 每次读(写)之后,自动将当 前工作指针的值加上本次读(写)的字节数,作为下次读(写) 的位置。从前面的介绍可以看出,要对一个文件进行操作, 除了要设当前工作指针,还必须管理缓冲区。实际上,在 头文件stdio.h中,定义了一个名为FILE的类型,包含了所 有与文件操作有关的数据成员,这个文件类型是文件处理 的基础。文件类型FILE不是C语言的新类型,它是用 typedef定义出来的有关文件信息的一种结构体类型。如 Turbo C的stdio.h文件中有如下的定义:

C语言程序设计第十章课件

动为其添加′\0′结束符
2/37
第2页/共37页
10.2字符串的存储
C语言并没有为字符串提供任何专门的表示法, 完全使用字符数组和字符指针来处理 字符数组
–每个元素都是字符类型的是数字组符数组,但不代表字符串
char str[80];
Ho w Ho w
ar e ar e
y o u \0 y o u \0
H e l l o C h i n a \0 \0
2021/3/24
23/37
第23页/共37页
字符串比较
#include <string.h> strcmp(字符串1,字符串2);
string comparison
字符串能否用>、<、==比较大小?
if (str2 == str1)
if (strcmp(str2, str1) == 0)
char *pStr;
pStr = "Hello China"; 字符指针pStr是变量
2021/3/24
6/37
第6页/共37页
10.3字符指针
"Hello China"
str H e l l o
C h i n a \0
pStr
定义和初始化方法不同
char str[12] = {"Hello China"};
void MyStrcpy(char dstStr[], char srcStr[]) {
int i = 0; while (srcStr[i] != '\0') {
dstStr[i] = srcStr[i]; i++; } dstStr[i] = '\0'; }

C程序设计课件第10章


普通文件和设备文件
普通文件是指驻留在磁盘或其它外部介质上的一 个有序数据集,可以是源程序文件、目标程序文 件、可执行程序文件;也可以是一组待输入处理 的原始数据,或者是一组输出的结果。
设备文件是指与主机相联的各种外部设备,如显 示器、打印机、键盘等。
在操作系统中,把外部设备也作为文件来进行管 理,把它们的输入、输出等同于对磁盘文件的读 和写。通常显示器定义为标准输出文件,键盘是 标准输入文件
ASCII文件 二进制文件
文件名
文件名是文件的唯一标识,它的一般结构是
主文件名.扩展名
其中的扩展名可以省略,但通常都保留。
因为通过扩展名,可以判断文件类型。例如.
– .c
C语言的源程序文件
– .txt 文本文件
– .doc word文档文件
文件名分为
– 绝对文件名 从磁盘盘符开始描述的文件名
12 “ab+” 同“wb+”,但是不删除原有文件内容
关闭文件
函数原型
int fclose( FILE * stream );
调用方式 fclose( fp );
返回=值0EOF
操作成功 出错
读字符
函数原型:
int fgetc( FILE * fp );
功能 从fp指向的文件中读取一个字符,同时将读写位置 指针向前移动1个字节
返 回 值 = 读 E O 取 F 字 符 的 A S C I I 码
操 作 成 功 出 错 或 遇 到 文 件 结 束
写字符
函数原型 int fputc( int ch, FILE * fp );
功能 把字符ch写入fp指向的文件,同时将读写位置指针 向前移动1个字节。

《C语言程序设计教程》课件-第10章

② 标准输出文件,文件指针为stdout,系统指定为 显示器。
③ 标准错误输出文件,文件指针为stderr,系统指 定为显示器,输出错误信息。
精选ppt
10.1 文件的概述
11
10.1.2 文件的打开与关闭
操作文件的一般步骤
打开文件 读写文件 关闭文件 打开文件C:语建言立的用输户入程输序出与函文数件库的中联提系供,了为大文件分
1
C 语言程序设计
第10章 文 件
北京科技大学 计算机系
精选ppt
第10章 文件
2
10.1 文件的概念 10.2 文本文件的读写 10.3 二进制文件的读写
精选ppt
10.1 文件的概述
3
10.1.1 文件和文件指针
1. 什么是文件
文件:存储在外部存储介质上相关数据的集合。
例如:程序文件中保存着程序,数据文件中保存着数据。
1. 文件打开函数fopen()
常用的调用形式: FILE *fp; fp = fopen(文件名, 文件使用方式); 文件名:需要打开的文件名称(字符串)。 文件使用方式:是具有特定含义的符号。
函数功能:
按指定的文件使用方式打开指定的文件。 若文件打开成功,为该文件分配一个文件缓冲区和一个 FILE类型变量,返回一个FILE类型指针; 若文件打开失败,返回NULL。
*/
FILE在类usnhCso型语irgt是n言ed系中ch统a,r定无hb义os论li的dz;e对;,磁包//**盘含UBnu文gf在efte件scr tcs还dhiazi是reo.i设fh头n备o 文b文uf件*f件/er中*/
的读/un写si都gne要d c通har过F*IbuLfEfe类r;型/*的Da结ta 构tra体nsf变er量bu进ffe行r *。/
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档