当前位置:首页 >> IT/计算机 >>

C语言程序设计教案11_图文

16.6 判断文件结束函数 判断文件结束函数feof
EOF是文本文件的结束标志。 是文本文件的结束标志。 是文本文件的结束标志 文本文件中的数据都是用字符的ASCII码值存放。ASCII码的范围 文本文件中的数据都是用字符的 码值存放。 码的范围 码值存放 是0-255,不可能出现 不可能出现-1,所以可以用 所以可以用EOF(值为-1)作为文件结束 (值为 ) 不可能出现 所以可以用 的标志。 的标志。 feof函数,用来判断文件是否结束。 函数,用来判断文件是否结束。 函数 数据以二进制形式存放到文件中时,可能会出现-1值 数据以二进制形式存放到文件中时,可能会出现 值。EOF不再合 不再合 适。 feof(fp)的值为 表示文件结束,否则为 的值为1,表示文件结束 ( 的值为 表示文件结束,否则为0. feof既可以判断二进制文件是否结束,也可以判断文本文件是否结束。 既可以判断二进制文件是否结束,也可以判断文本文件是否结束。 既可以判断二进制文件是否结束

Company Logo

16.6 判断文件结束函数 判断文件结束函数feof
例:编写程序,用于把一个文本文件(源文件)复制到另一个文件中 编写程序,用于把一个文本文件(源文件) 目的文件)。源文件名为filea.txt,目的文件名为 )。源文件名为 (目的文件)。源文件名为 ,目的文件名为fileb.txt。 。 #include "stdio.h" void filecopy(FILE *,FILE *); main() { FILE *fpin,*fpout; fpin=fopen("filea.txt","r"); /*打开源文件 打开源文件*/ 打开源文件 fpout=fopen("fileb.txt","w"); /*打开目的文件 打开目的文件*/ 打开目的文件 filecopy(fpin,fpout); /*把fpin所指文件内容复制到 所指文件内容复制到fpout所指文件中 所指文件中*/ 把 所指文件内容复制到 所指文件中 fclose(fpin); fclose(fpout); }
Company Logo

16.6 判断文件结束函数 判断文件结束函数feof
例:编写程序,用于把一个文本文件(源文件)复制到另一个文件中 编写程序,用于把一个文本文件(源文件) 目的文件)。源文件名为filea.txt,目的文件名为 )。源文件名为 (目的文件)。源文件名为 ,目的文件名为fileb.txt。 。 void filecopy(FILE *fpin, FILE *fpout) { char ch; ch=getc(fpin); while(!feof(fpin)) /*判断源文件是否结束,若结束 判断源文件是否结束, 的值为1*/ 判断源文件是否结束 若结束feof的值为 的值为 {putc(ch,fpout);ch=getc(fpin);} }

Company Logo

16.7 fscanf函数和 函数和sprintf函数 函数和 函数
1.fscanf函数 函数
fscanf函数只能从文本文件中按格式输入。和scanf函数相似。 函数只能从文本文件中按格式输入。 函数相似。 函数只能从文本文件中按格式输入 函数相似 调用形式: 文件指针,格式控制字符串 调用形式:fscanf(文件指针 格式控制字符串,输入项表); 文件指针 格式控制字符串,输入项表); 若文件指针fp已经指向一个已经打开的文本文件 已经指向一个已经打开的文本文件, 例:若文件指针 已经指向一个已经打开的文本文件,a,b分别为整型 分别为整型 变量, 变量,则 fscanf(fp,”%d%d”,&a,&b); 功能: 所指文本文件中, 功能:从fp所指文本文件中,读入两个整数放入变量 和b中。 所指文本文件中 读入两个整数放入变量a和 中 fscanf(stdin,”%d%d”,&a,&b);

fscanf(”%d%d”,&a,&b);

Company Logo

16.7 fscanf函数和 函数和sprintf函数 函数和 函数
2.fprintf函数 函数
fprintf函数按格式将内在中的数据转换成对应的字符,并以ASCII码 函数按格式将内在中的数据转换成对应的字符,并以 函数按格式将内在中的数据转换成对应的字符 码 形式输出到文本文件中。功能和printf函数类似。 函数类似。 形式输出到文本文件中。功能和 函数类似 调用形式: 文件指针,格式控制字符串 调用形式:fprintf(文件指针 格式控制字符串,输出项表); 文件指针 格式控制字符串,输出项表); 若文件指针fp已经指向一个已经打开的文本文件 已经指向一个已经打开的文本文件, 例:若文件指针 已经指向一个已经打开的文本文件,a,b分别为整型 分别为整型 变量, 变量,则 fprintf(fp,”%d%d”, a, b); 功能:将两个整数a和 按指定的格式放到 所指文本文件中。 按指定的格式放到fp所指文本文件中 功能:将两个整数 和b按指定的格式放到 所指文本文件中。 fprintf(stout,”%d %d”, a, b);

fprintf(”%d %d”, a, b);

Company Logo

16.8 fgets函数和 函数和fputs函数 函数和 函数
1.fgets函数:从文件中读入一串字符。 函数:从文件中读入一串字符。 函数
调用形式: 调用形式:fgets(str,n,fp); fp:文件指针 文件指针 str:存放字符串的起始地址 存放字符串的起始地址 n:整型变量,用来表示读入字符的个数。 整型变量, 整型变量 用来表示读入字符的个数。
说明: 说明: 个字符时, (1)如果在未读满 )如果在未读满n-1个字符时,遇到一个换行符或文件结束标志, 个字符时 遇到一个换行符或文件结束标志, 则结束本次操作,读入字符包含最后读入的换行符。 则结束本次操作,读入字符包含最后读入的换行符。即fgets只能读 只能读 个字符。 入n-1个字符。 个字符 (2)读入结束后,系统自动在最后加’\0’,并以 )读入结束后,系统自动在最后加’ ,并以str作为函数值返 作为函数值返 回。

Company Logo

16.8 fgets函数和 函数和fputs函数 函数和 函数
2.fputs函数:向文件输出一串字符。 函数:向文件输出一串字符。 函数
调用形式: 调用形式:fputs(str, fp); fp:文件指针 文件指针 str:存放字符串的起始地址 存放字符串的起始地址
说明: 说明: 是待输出的字符串, (1)str是待输出的字符串,可以是字符串常量,也可以指向字符中的 ) 是待输出的字符串 可以是字符串常量, 指针或是存放字符的数组地址等。 指针或是存放字符的数组地址等。 并不输出, (2)最后的’\0’并不输出,也不自动加’\n’。 )最后的’ 并不输出 也不自动加’ 。 (3)输出成功,返回一个正整数,否则为 (EOF)。 )输出成功,返回一个正整数,否则为-1( )。 这样的字符串。 (4)为了便于读出,应当在末尾人为地加上诸如“\n“这样的字符串。 )为了便于读出,应当在末尾人为地加上诸如“ 这样的字符串

Company Logo

16.9 fread函数和 函数和fwrite函数 函数和 函数
fread 和fwrite用来读写二进制文件。 用来读写二进制文件。 用来读写二进制文件 1.fread函数 函数 调用形式: 调用形式:fread(buffer,size,count,fp);
说明: 说明: 是数据块的指针, (1)buffer是数据块的指针,是内存块的首地址 ) 是数据块的指针 (2)size是每个数据块的字节数 ) 是每个数据块的字节数 用来指定读一次, (3)count用来指定读一次,输入数据块的个数。 ) 用来指定读一次 输入数据块的个数。

Company Logo

16.9 fread函数和 函数和fwrite函数 函数和 函数
fread 和fwrite用来读写二进制文件。 用来读写二进制文件。 用来读写二进制文件 2.fwrite函数 函数 调用形式: 调用形式:fwrite(buffer,size,count,fp);
说明: 说明: 是数据块的指针, (1)buffer是数据块的指针,是准备输出的数据块的起始地址。 ) 是数据块的指针 是准备输出的数据块的起始地址。 (2)size是每个数据块的字节数 ) 是每个数据块的字节数 用来指定读一次, (3)count用来指定读一次,输入数据块的个数。 ) 用来指定读一次 输入数据块的个数。

Company Logo

16.9 fread函数和 函数和fwrite函数 函数和 函数
例:有如下结构体: 有如下结构体: struct st {char num[8]; float mk[5]; }pers[30]; for(i=0;i<30;i++) fwrite(&pers[i],sizeof(struct st),1,fp); i=0; fread(&pers[i],sizeof(struct st),1,fp); while(!feof(fp)) {i++; fread(&pers[i],sizeof(struct st);1,fp);}

Company Logo

16.10 文件定位函数
文件指针 文件位置指针

fp offset

fopen

file1.dat a b c d e . . . 2 \0

Company Logo

16.10 文件定位函数
1.fseek函数 用来移动文件位置 函数:用来移动文件位置 函数 指针到指定的位置上。 指针到指定的位置上。 调用形式: 调用形式:fseek(fp,offset,origin); 说明: 说明: (1)fp是文件指针 ) 是文件指针 2)offset是以字节为单位的位移量 (2)offset是以字节为单位的位移量 是起始点, (3)origin是起始点,用来指定位移量是以哪个位置为基准,起始点 ) 是起始点 用来指定位移量是以哪个位置为基准, 可用标识符来表示,也可用数字来表示。 可用标识符来表示,也可用数字来表示。 标识符 SEEK_SET SEEK_END SEEK_CUR 数字 0 1 2 代表的起始点 文件开始 文件末尾 文件当前位置
Company Logo

已经指向一个二进制文件, 例:假设fp已经指向一个二进制文件 以下函数调用将使文件位置指针 假设 已经指向一个二进制文件 从文件开头后移30个字节 个字节。 从文件开头后移 个字节。 fseek(fp,30L,SEEK_SET); 已经指向一个二进制文件, 例:假设fp已经指向一个二进制文件 以下函数调用将使文件位置指针 假设 已经指向一个二进制文件 从文件尾部前移10个 个字节。 从文件尾部前移 个sizeof(int),即20个字节。 , 个字节 fseek(fp,-10L*sizeof(int),SEEK_END); 说明: 说明: 对于二进制文件,若位移量为正整数时, 对于二进制文件,若位移量为正整数时,表示位置指针从指定的起始 点向文件尾部移动;当位移量为负整数时, 点向文件尾部移动;当位移量为负整数时,表示位置指针从指定位置 向文件首部方向移动。 向文件首部方向移动。

Company Logo

已经指向一个文本文件, 例:假设fp已经指向一个文本文件 以下函数调用将使文件位置指针移 假设 已经指向一个文本文件 动文件的开头。 动文件的开头。 fseek(fp, 0L,SEEK_SET); 已经指向一个二进制文件, 例:假设fp已经指向一个二进制文件 以下函数调用将使文件位置指针 假设 已经指向一个二进制文件 移动文件末尾。 移动文件末尾。 fseek(fp,0L, fseek(fp,0L,SEEK_END); 说明: 说明: 对于文本文件,位移量必须是0. 对于文本文件,位移量必须是

Company Logo

16.10 文件定位函数
2.ftell函数:用来获得文件位置指针的位置,函数给出当 函数:用来获得文件位置指针的位置, 函数 前位置指针相对于文件开头的字节数。 前位置指针相对于文件开头的字节数。 相对于文件开头的字节数
调用形式: 调用形式: long t; t=ftell(fp); 当函数调用出错时,函数返回-1L. 当函数调用出错时,函数返回 用ftell函数可以求出文件的字节数 函数可以求出文件的字节数 fseek(fp,0L,SEEK_END) /*把位置指针移到文件末尾 把位置指针移到文件末尾*/ 把位置指针移到文件末尾 t=ftell(fp);

Company Logo

16.10 文件定位函数
若文件中存放的是结构体类型数据,可通过 若文件中存放的是结构体类型数据,可通过ftell函数求出该 函数求出该 文件中以结构体为单位的数据块的个数。 文件中以结构体为单位的数据块的个数。
fseek(fp,0L,SEEK_END); t=ftell(fp); n=t/sizeof(struct st);

Company Logo

16.10 文件定位函数
3.rewind函数(反绕函数):使文件的位置指针回到文件的开头。 函数(反绕函数) 使文件的位置指针回到文件的开头 使文件的位置指针回到文件的开头。 函数 调用形式: 调用形式:rewind(fp);

Company Logo

C语言数据类型 语言数据类型
int char 基本类型 float型 型 double void 数组 C数据类型 数据类型 派生类型 指针 typedef 构造类型 struct union
Company Logo

14.1 用typedef说明一种新类型名 说明一种新类型名
typedef 类型名 标识符; 标识符;
习惯用大 于字母

例: typedef int INTEGER; INTEGER m,n; m=9; n=0; 例: typedef char * CHARP; CHARP p;

int m,n; m=9; n=0;

char * p;

Company Logo

14.1 用typedef说明一种新类型名 说明一种新类型名
说明一个新类型的步骤: 说明一个新类型的步骤: (1)首先按通常定义变量的写出定义的主体: )首先按通常定义变量的写出定义的主体: char *p; (2)将变量名换成新类型名: )将变量名换成新类型名: char * CHARP; (3)在最左面加上关键字 )在最左面加上关键字typedef typedef char * CHARP; (4)用新类型名定义变量: )用新类型名定义变量: CHARP p;

Company Logo

14.2 结构体类型
年:整型 日期信息: 日期信息: 月:整型 日:整型

姓名: 姓名:字符串 学生信息: 学生信息: 性别:字符型 性别: 年:整型 生出日期: 生出日期: 月:整型 日:整型 四门课成绩: 四门课成绩:实型数组
Company Logo

如何定义? 如何定义?

14.2 结构体类型
1.结构体变量说明形式: 结构体变量说明形式: 结构体变量说明形式 struct data struct 结构体变量标识名 { { int year ; 类型名1 结构成员名表1; 类型名 结构成员名表 ; int month ; 类型名2 结构成员名表2; 类型名 结构成员名表 ; int day; 。。。 }; 类型名n 结构成员名表n; 类型名 结构成员名表 ; }; struct student struct student { char name[8]; ; char sex ; struct data birthday; float score[4]; ; };

int year,month,day;

{ char name[8]; ; char sex ; struct {int year; int month int day} birthday; float score[4]; ; };
Company Logo

14.2 结构体类型
2.结构体类型的变量、数组、指针变量的定义 结构体类型的变量、数组、 结构体类型的变量
(1).紧跟着结构体类型说明之后进行定义 ) 紧跟着结构体类型说明之后进行定义 struct student { char name[8]; ; char sex ; struct data birthday; float score[4]; ; }std,pers[3],*pstd;
8个字节 个字节 name sex birthday

std

1个字节 个字节 6个字节 个字节

16个字节 个字节

score

Company Logo

14.2 结构体类型
(2).说明一个无名结构体类型的同时进行定义 ) 说明一个无名结构体类型的同时进行定义 struct student { char name[8]; ; char sex ; struct data birthday; float score[4]; ; }std,pers[3],*pstd; 省略结构体变量名,通常用在不需要再次定义此类型结构体变量的情况。 省略结构体变量名,通常用在不需要再次定义此类型结构体变量的情况。

Company Logo

14.2 结构体类型
先说明结构体变量类型, (3).先说明结构体变量类型,再单独进行变量定义 ) 先说明结构体变量类型 struct student { char name[8]; ; char sex ; struct data birthday; float score[4]; ; }; struct student std,pers[3],*pstd;

Company Logo

14.2 结构体类型
先用typedef说明一个结构体类型名,再用新类型名来定义变量 说明一个结构体类型名, (4).先用 ) 先用 说明一个结构体类型名 struct typedef { char name[8]; ; char sex ; struct data birthday; float score[4]; ; } STREC ; STREC std,pers[3],*pstd;

Company Logo

14.2 结构体类型
3.给结构体变量、数组赋初值 给结构体变量、 给结构体变量
(1)给结构体变量赋初值 ) 定义的同时赋初值 struct stduent { char name[8]; char sex; struct data birthday; float score[4]; }std={“LIMING”,’M’,1962,5,10,88.0,76.5,85.5,90.0};

Company Logo

14.2 结构体类型
3.给结构体变量、数组赋初值 给结构体变量、 给结构体变量
(2)给结构体数组赋初值 ) 定义的同时赋初值 struct stduent { char name[8]; char sex; struct data birthday; per[1] float score[4]; }per[3]={{“LIMI”,’M’,1982,5,10,88.0,76.5,85.5,90.0}, {“zhangsan”,’F’,1983,10,10,85.0,76.5,95.5,70.0}, per[2] {“wangfang”,’M’,1982,6,15,82.0,76.0,75.0,90.5}};
per[3]

Company Logo

14.2 结构体类型
4.引用结构体变量中的数据 引用结构体变量中的数据
(1)对结构体变量成员的引用 ) 结构体变量名.成员名 结构体变量名 成员名 指针变量名->成员名 指针变量名 成员名 (*指针变量名 成员名 指针变量名).成员名 指针变量名
->称为结构指向 称为结构指向 运算符 .称为成员运算符 称为成员运算符

Company Logo

14.2 结构体类型
例: struct stduent { char name[8]; char sex; struct data birthday; float score[4]; }std,per[5],*ps; ; ps=&std; std.sex ps->sex (*ps).sex per[0].sex (*ps).score[2] ps->name

√ √ √ √ √ √ √ √

ps->birthday.year per[0].birthday.month

Company Logo

14.2 结构体类型
4.引用结构体变量中的数据 引用结构体变量中的数据
(2)对结构体变量中的成员进行操作 )
scanf(“%s”,std.name);

例: scanf(“%s”,per[i].name); struct stduent strcpy(std.name,”zhangsan”) { char name[8]; pstd=&std; gets(pstd->name); char sex; struct data birthday; for(i=0;i<4;i++) float score[4]; scanf(“%d”,&pers[i].birthday.year); }std,per[5],*ps; ; for(i=0;i<4;i++) ps=&std;
for(j=0;j<5;j++) {scanf(“%f”,&std.sc[j]); pers[i].sc[j]=std.sc[j];}

for(i=0;i<4;i++)

Company Logo

14.2 结构体类型
4.引用结构体变量中的数据 引用结构体变量中的数据
(3)相同类型结构体变量之间的整体赋值 ) 例: struct { char name[10]; int num; }per1,per2={“zhangsan”,46} per1=per2;
必须保证赋值号两边 结构体变量的类型相同
Company Logo

14.2 结构体类型
#include "stdio.h" 4.函数之间结构体变量的数据传递 函数之间结构体变量的数据传递

typedef struct (1)传递结构体变量中单个成员的数据 ) { char s[10]; 和普通变量作参数传递时一样。 和普通变量作参数传递时一样。 int t; }ST;

(2)传递整个结构体变量中的数据 )

int getdata(ST *p) /*形参为结构体类型的指针变量 形参为结构体类型的指针变量*/ 形参为结构体类型的指针变量 传递的是实参结构体变量中的值,系统为它开辟存储单元。 传递的是实参结构体变量中的值,系统为它开辟存储单元。形参变量 {scanf("%s %d",p->s,&p->t);} 中任何成员的改变,都不会影响实参。 中任何成员的改变,都不会影响实参。 main() { 传递的是结构体变量的地址,可以通过函数调用, 传递的是结构体变量的地址,可以通过函数调用,有效地修改实参结 ST a; getdata(&a); 构体中成员的值。 构体中成员的值。 printf("%s %d\n",a.s,a.t); (4)传递结构体数组名 ) }

(3)传递结构体变量的地址 )

Company Logo

Company Logo


相关文章:
C语言程序设计 电子教案第一章11_图文.ppt
C语言程序设计 电子教案第一章11_工学_高等教育_教育专区。电子教案程序设计基
C语言程序设计-电子教案 第11章_图文.ppt
C语言程序设计-电子教案11章 - 第11章 C语言的模块化程序设计 本章学
C语言程序设计 电子教案第八章11_图文.ppt
C语言程序设计 电子教案第八章11 - 6.7 编译预处理 基本内容: 宏定义
C语言程序设计 电子教案第二章11_图文.ppt
C语言程序设计 电子教案第二章11 - 第二章 基本数据类型和表达式 本章内容
C语言程序设计 电子教案第八章11解析_图文.ppt
C语言程序设计 电子教案第八章11解析 - 6.7 编译预处理 基本内容: 宏定
C语言程序设计 电子教案第十章11解读_图文.ppt
C语言程序设计 电子教案第十章11解读 - 第十章 文件 10.1 10.2 1
C语言程序设计11_图文.ppt
C语言程序设计11 - 第11章 位运算 11.1基本位运算符与位运算 11.2位移运算符与位移运算 11.3位运算的复合赋值运算符 11.4 位段 2013-4-19 《C语言程序...
C语言程序设计第11章_图文.ppt
C语言程序设计11章_工学_高等教育_教育专区。位运算主 要内容 重点 难点
C语言程序设计 11-函数(1)_图文.ppt
C语言程序设计 11-函数(1) - C语言电子教案(十一) 第十一讲 函数(1
业务14C语言程序设计-11-文件_图文.ppt
业务14C语言程序设计-11-文件 - ? 11.1 C文件概述 第十一章 文件
C语言程序设计_谭浩强_第二版_CH11_图文.ppt
C语言程序设计_谭浩强_第二版_CH11 - C程序设计 第十一章 结构体与共用体 主讲人:兰强 raansan@sina.com 第十一章 结构体与共用体 主要内容: ? 结构体的...
c语言程序设计详细教案_图文.pdf
c语言程序设计详细教案 - ...... c语言程序设计详细教案_理学_高等教育_教育专区。c语言程序设计...C语言程序设计教案11 34页 免费 《C语言程序设计》课程教.....
第11章_文件《C语言程序设计(第三版)》-电子教案_图文.ppt
11章_文件《C语言程序设计(第三版)》-电子教案 - Hanent整理 21世纪高等学校精品规划教材 第11章 文件 ? ? ? ? ? ? 了解磁盘文件的概念和用途 掌握文件...
C语言程序设计教案_图文.ppt
9章 编译预处理 第10章 结构体与联合 第11章 位运算 第12章 文件 教学要点...什么是程序设计? 1.1 程序设计C语言 1.1.1 程序与程序设计语言 ?1.程序...
《C语言程序设计》PPT电子教案_图文.ppt
C语言程序设计》PPT电子教案 - 第1章 C语言概述 第2章 数据类型、运算
C语言程序设计教案_课件__图文.ppt
C语言程序设计教案_课件__工学_高等教育_教育专区。这是我讲C语言课程设计这...C,D,E,F 例2: 0.75 (D)=0.11(B) C 语言 0.64(D)=0.1010(B) 0...
C语言程序设计教程(电子教案)_图文.ppt
C语言程序设计教程(电子教案) - C 语言程序设计 教程 刘新铭 吉顺如 辜碧
C语言程序设计教程(电子教案)_图文.ppt
C语言程序设计教程(电子教案) - C 语言程序设计 教程 刘新铭 吉顺如 辜碧
C语言程序设计教程电子教案第05章_图文.ppt
C语言程序设计教程电子教案第05章 - 第5章 章 循环结构程序设计 5.1 循
C语言程序设计教案c6_图文.ppt
C语言程序设计教案c6 - 第六章 函数 §6.1 概述 ?模块化程序设计 ?基
更多相关标签: