C语言第6章 库函数(文件操作)

合集下载

C语言程序设计 第六章 函数 试题及答案

C语言程序设计 第六章 函数 试题及答案
A)实参可以是常量、变量或表达式
B)形参可以是常量、变量或表达式
C)实参可以是任意类型
D)实参应与其对应的形参类型一致
参考答案:B
6.8以下正确的说法是。
A)定义函数时,形参的类型说明可以放在函数体内
B)return后面的值不能为表达式
C)如果函数的类型与返回值类型不一致,以函数类型为准
D)如果形参与实参的类型不一致,以实参类型为准
A)float型B)int型C)long型D)double型
参考答案:B
6.12 C语言规定,函数返回值的类型是由所决定。
A)return语句中的表达式类型
B)调用该函数时的主调函数类型
C)调用该函数是系统临时指定
D)在定义该函数时所指定的函数类型
参考答案:D
*6.13下面函数调用语句含有实参的个数为。
if(m!=-1) n=m;
}
printf("\nn=%d",n);
}
【1】A)k*10 B)k%10 C)k/10 D)k*10%10
【2】A)a2*10 B)a2 C)a2/10 D)a2%10
参考答案:【1】C【2】A
6.18以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'A','B','C');则符合程序段运行结果的选项是。
A-->C A-->C B-->C B-->C
A-->B A-->B A-->C A-->C
参考答案:C
6.19若用数组名作为函数调用的实参,传递给形参的是。
A)数组的首地址B)数组第一个元素的值
C)数组中全部元素的值D)数组元素的个数

C语言文件操作函数大全

C语言文件操作函数大全

C语言文件操作函数13.1C语言文件1,两种文件存取方式(输入,输出方式)顺序存取直接存取2,数据的两种存放形式文本文件二进制文件13.2文件指针定义文件类型指针变量的一般形式:FILE *指针变量名;例如:FILE *fp1,*fp2;13.3打开文件在使用文件之前,需打开文件.在C里使用fopen函数打开文件.格式为:fopen(文件名,文件使用方式);此函数返回一个指向FILE类型的指针.如:FILE *fp;fp=fopen("file_1","r");如果调用成功,fp就指向file_1,否则返回为NULL,所以为了保证文件的正确使用,要进行测试.采用如下语句:If((fp=fopen("file_1","r"))==NULL){printf("Cannot open this file\n");exit(0);}最常用的文件使用方式及其含义如下:1,"r".为读而打开文本文件.(不存在则出错) 2,"rb".为读而打开二进制文件.3,"w".为写而打开文本文件.(若不存在则新建,反之,则从文件起始位置写,原内容将被覆盖) 4,"wb".为写而打开二进制文件.5,"a".为在文件后面添加数据而打开文本文件.(若不存在,则新建;反之,在原文件后追加)6,"ab".为在文件后面添加数据而打开一个二进制文件.最常用的文件使用方式及其含义如下:7,"r+".为读和写而打开文本文件.(读时,从头开始;在写数据时,新数据只覆盖所占的空间,其后不变) 8,"rb+".为读和写而打开二进制文件.只是在随后的读写时,可以由位置函数设置读和写的起始位置. 9,"w+".首先建立一个新文件,进行写操作,随后可以从头开始读.(若文件存在,原内容将全部消失) 10,"wb+".功能与"w+"同.只是在随后的读写时,可以由位置函数设置读和写的起始位置.最常用的文件使用方式及其含义如下:11,"a+".功能与"a"相同;只是在文件尾部添加新的数据后,可以从头开始读.12,"ab+".功能与"a+"相同;只是在文件尾部添加新数据之后,可以由位置函数设置开始读的起始位置. 13.4关闭文件当文件的读写操作完成之后,使用fclose函数关闭文件.格式如下:fclose(文件指针)如:fclose(fp);13.5调用fgetc和fputc函数进行输入和输出1,调用fputc函数输出一个字符功能是:将字符ch写到文件指针fp所指的文件中去.当输出成功,putc函数返回所输出的字符;否则,返回一个EOF值.EOF是在stdio.h库函数文件中定义的符号常量,其值等于-1.13.5调用fgetc和fputc函数进行输入和输出例如:把从键盘输入的文本按原样输出到名为file_1.dat文件中,用字符@作为键盘输入结束标志. #includeVoid main(){FILE *fpout;char ch;if(fpout=fpopen("file_1","w")==NULL){printf("Cannot open this file!\n");exit(0);}ch=getchar();while(ch!='@'){ fputc(ch,fpout); ch=getchar(); }fclose(fpout);}2.调用fgetc函数输入一个字符功能是:从pf指定的文件中读如一个字符,并把它作为函数值返回.例如:把一个已存在磁盘上的file_1.dat文本文件中的内容,原样输出到终端屏幕上.#includevoid main(){FILE *fpin;char ch;if((fpin=fopen("file_1.dat","r"))==NULL){ printf("Cann't open this file!\n");exit(0);} ch=fgetc(fpin);while (ch!=EOF){ putchar(ch); ch=fgetc(fpin);}fclose(fpin);}13.6判断文件结束函数feofEOF可以作为文本文件的结束标志,但不能作为二进制文件的结束符.feof函数既可以判断二进制文件,又可以判断文本文件.例:编写程序,用于把一个文本文件(源)复制到另一个文件(目的)中,源文件名和目的文件名由命令行输入.命令形式如下:可执行程序名源文件名目的文件名#includevoid filecopy(FILE* ,FILE *);void main(int argc,char *argv[]){FILE *fpin,*fpout;if(argc==3){ fpin=fopen(argv[1],"r");fpout=fopen(argv[2],"w");filecopy(fpin,fpout);fclose(fpin);fclose(fpout);}else if(argc>3)printf("The file names too many!!\n";elseprintf("There are no file names for input or output!!\n );}void filecopy(FILE *fpin,FILE *fpout){char ch;ch=getc(fpin);while(!feof(fpin)){putc(ch,fpout); ch=getc(fpin);}}13.7fscanf函数和fprintf函数1,fscanf函数fscanf只能从文本文件中按格式输入,和scanf函数相似,只不过输入的对象是磁盘上文本文件中的数据.调用形式为:fscanf(文件指针,格式控制字符串,输入项表)例如:fscanf(fp,"%d%d",&a,&b);fscanf(stdin,"%d%d",&a,&b);等价于scanf("%d%d",&a,&b);3.fprintf函数fprintf函数按格式将内存中的数据转换成对应的字符,并以ASCII代码形式输出到文本文件中.Fprintf 函数和printf函数相似,只是将输出的内容按格式存放到磁盘的文本文件中.调用形式如下:fprintf(文件指针,格式控制字符串,输出项表)如:fprintf(fp,"%d %d",x,y);以下语句 fprintf(stdout,"%d %d",x,y)13.8fgets函数和fputs函数1,fgets函数fgets函数用来从文件中读入字符串.调用形式如下: fgets(str,n,fp);函数功能是:从fp所指文件中读入n-1个字符放入str 为起始地址的空间内;如果在未读满n-1个字符时,则遇到换行符或一个EOF结束本次读操作,并已str作为函数值返回. 13.8fgets函数和fputs函数2,fputs函数fput函数把字符串输出到文件中.函数调用形式如下: fputs(str,fp);注意:为了便于读入,在输出字符串时,应当人为的加诸如"\n"这样的字符串.#include <stdio.h>#include <iostream>int main(int argc, char *argv[]){char arr[10] ;char *ap = "hello!" ;FILE *fp ;if ((fp = fopen("hello.txt", "wt+")) == NULL) {printf("error!") ;exit(1) ;}fputs(ap, fp) ;rewind(fp) ; //fgets(arr, 10, fp) ;printf("%s\n", arr) ;fclose(fp) ;return 0 ;}13.9fread函数和fwrite函数例如有如下结构体:struct st{char num[8];float mk[5];}pers[30];以下循环将把这30个元素中的数据输出到fp所指文件中.for(i=0;i<30;i++)fwrite(&pers[i],sizeof(struct st),1,fp);13.9fread函数和fwrite函数以下语句从fp所指的文件中再次将每个学生数据逐个读入到pers数组中.i=0;fread(&pers[i],sizeof(struct st),1,fp);while(!feof(fp)){ i++;fread(&pers[i],sizeof(struct st),1,fp);}13.10文件定位函数1,fseek函数fseek函数用来移动文件位置指针到指定的位置上,接着的读或写操作将从此位置开始.函数的调用形式如下:fseek(pf,offset,origin)pf:文件指针offset:以字节为单位的位移量,为长整形.origin:是起始点,用来指定位移量是以哪个位置为基准的.1,fseek函数位移量的表示方法标识符数字代表的起始点SEEK_SET 0 文件开始SEEK_END 2 文件末尾SEEK_CUR 1 文件当前位置假设pf已指向一个二进制文件,则;fseek(pf,30L,SEEK_SET)fseek(pf,-10L*sizeof(int),SEEK_END)对于文本文件,位移量必须是0;如:fseek(pf,0L,SEEK_SET)fseek(pf,0L,SEEK_END)2. ftell函数ftell函数用以获得文件当前位置指针的位置,函数给出当前位置指针相对于文件开头的字节数.如;long t;t=ftell(pf);当函数调用出错时,函数返回-1L.我们可以通过以下方式来测试一个文件的长度: fseek(fp,0L,SEEK_END);t=ftell(fp);3.rewind函数调用形式为:rewind(pf);函数没有返回值.函数的功能是使文件的位置指针回到文件的开头.13.10文件应用在磁盘上的test.txt文件中放有10个不小于2的正整数,用函数调用方式编写程序.要求实现:1,在被调函数prime中,判断和统计10个整数中的素数以及个数.2,在主函数中将全部素数追加到磁盘文件test.txt的尾部,同时输出到屏幕上.#include#includeInt prime(int a[],int n){int I,j,k=0,flag=0;for(i=0;i { for(j=2;j if(a[i]%j==0){ flag=0; break;}else flag=1;if(flag){a[k]=a[i];k++;}}return k; }void main(){int n,I,a[10];FILE *fp;fp=fopen("test1-2.txt","r+");for(n=0;n<10;n++)fscanf(fp,"%d",&a[n]);n=prime(a,n);fseek(fp,o,2);for(i=0;i {printf("%3d",a[i]);fprintf(fp,"%3d",a[i]);}fclose(fp);}文件操作函数全clearerr(清除文件流的错误旗标)相关函数feof表头文件#include<stdio.h>定义函数void clearerr(FILE * stream);函数说明clearerr()清除参数stream指定的文件流所使用的错误旗标。

C语言文件操作读写文件和错误处理

C语言文件操作读写文件和错误处理

C语言文件操作读写文件和错误处理一、文件操作概述文件操作是指通过编程语言对计算机文件进行读取和写入的过程。

在C语言中,文件操作是通过标准库函数来实现的,主要包括打开文件、读写文件、关闭文件、错误处理等步骤。

本文将介绍C语言中文件操作的基本流程以及常见的错误处理方式。

二、打开文件在C语言中,可以使用fopen函数来打开文件。

其基本语法如下:FILE *fopen(const char *filename, const char *mode);其中,filename是要打开的文件名,可以是绝对路径或相对路径;mode是打开文件的模式,常见的模式包括:- "r":只读模式,打开文件进行读取- "w":写入模式,创建新文件,若文件已存在则先清空内容- "a":追加模式,打开文件进行写入,若文件不存在则创建新文件- "r+":读写模式,打开文件进行读写- "w+":读写模式,创建新文件,若文件已存在则先清空内容- "a+":读写模式,打开文件进行读写,若文件不存在则创建新文件,并在文件末尾添加内容打开文件后,会返回一个FILE型的指针,用于后续的读写操作。

三、读取文件1. 逐字符读取可以使用fgetc函数来逐字符读取文件内容。

其基本语法如下:int fgetc(FILE *stream);其中,stream是打开的文件的指针,函数会依次读取文件中的每个字符,并返回ASCII码值。

当读取到文件末尾时,返回EOF。

2. 逐行读取可以使用fgets函数来逐行读取文件内容。

其基本语法如下:char *fgets(char *str, int n, FILE *stream);其中,str是用来存储读取内容的字符数组,n是最大读取字符数(包括换行符),stream是打开的文件的指针。

函数会将读取到的一行内容(包括换行符)存储到str中,并返回str的地址。

大学C语言程序设计 第六章

大学C语言程序设计 第六章

2.函数表达式: 2.函数表达式: 函数表达式
功能:将函数作为表达式的一部分。 功能:将函数作为表达式的一部分。 如: c=2*max(a,b); 要点:要求函数带回一个确定的值,以参加表达式的运算。 要点:要求函数带回一个确定的值,以参加表达式的运算。
3.一个函数作为另一个函数的参数: 3.一个函数作为另一个函数的参数: 一个函数作为另一个函数的参数
若不需要函数带回任何值,可使用: 若不需要函数带回任何值,可使用:
void printstar(){ …} } void print_message(){…} print_message(){ }
例exp6_5:函数返回值的类型与其定义的 exp6_5:函数返回值的类型与其定义的 类型不符的情况。 类型不符的情况。
一函数的定义重点二函数的调用重点1函数的一般调用2函数的嵌套调用3函数的递归调用三数组作为函数的参数难点四局部变量与全局变量难点五变量的存储类别难点六内部函数与外部函数1概述2函数定义的方法重点3函数的参数难点4函数的返回值难点1c程序的基本结构回顾2什么是函数
第六章
[教学要求] 教学要求]


1.理解函数的功能。 理解函数的功能。 2.掌握函数定义的一般形式(重点)。 掌握函数定义的一般形式(重点)。 掌握函数的形参与实参的对应关系、 3.掌握函数的形参与实参的对应关系、参数传递方法及函数返回值 的概念(难点) 的概念(难点) 。 掌握函数调用的基本方法(重点) 4.掌握函数调用的基本方法(重点) 。 掌握函数嵌套调用的一般过程(重点) 5.掌握函数嵌套调用的一般过程(重点) 。 了解函数递归调用的几种形式。 6.了解函数递归调用的几种形式。 掌握数组名作为函数的参数的一些特点(难点) 7.掌握数组名作为函数的参数的一些特点(难点) 。 8.掌握局部变量与全局变量的概念及它们的使用特点(难点) 。 掌握局部变量与全局变量的概念及它们的使用特点(难点) 掌握动态存储变量与静态存储变量的含义,会正确识别和使用。 9.掌握动态存储变量与静态存储变量的含义,会正确识别和使用。 10.了解内部函数与外部函数的含义。 10.了解内部函数与外部函数的含义。

c语言程序设计第6章PPT课件

c语言程序设计第6章PPT课件

End Sub
第20页/共49页
6.2 函数过程的定义与调用
• 【例6-6】 编写计算阶乘的函数过程,当用户单击窗体时,利用下列近似公式计算 (直到最后一项小于10-7为止)。
Private Sub Form_Click() 调用函数Fact的程序代码如下:
Dim n!
Private Function Fact(x!)
c > a + b Then MsgBox "输入的三条边
不能构成一个三角形!" Else Call area(a, b, c, w) txtMj.Text = Str(w) End If
End Sub
第11页/共49页
6.1 子过程的定义与调用
• 2. 把过程名作为一个语句来用 语法: 过程名 [实参1[,实参2……]] 它与Call语句的不同点是:去掉了Call关键字和实参列表的括号。 如上例中可以改成:area a,b,c,w
(3)在函数体内,函数名可以当变量使用,函数
第14页/共49页
6.2 函数过程的定义与调用
• (4)如果函数体内没有给函数名赋值,则返回对应类型的缺省值, 数值函数返回0,字符串函数返回空字符串,变体型函数返回Empty。
• (5)As类型:是指函数返回值的类型,若省略,则函数返回变体类 型值(Variant)。
• 6.3.2 变量的作用域 • 1. 局部变量 在过程内部(如Command1_Click)使用Dim或者Static关键字来声明的变量,只在声明它们的 过程中才能被访问或改变该变量的值,别的过程不可访问。所以可以在不同的过程中声明相同名字的 局部变量而互不影响。
第26页/共49页
6.3 变量、过程的作用域

第6章C语言程序设计

第6章C语言程序设计

6.2函数
C语言中又规定在以下几种情况时可以省去主调函数中对 被调函数的函数说明。
本章目录
6.1函数分类 6.2函数
6.3 函数调用
6.4函数和数组 6.5变量的作用域 6.6变量的存储类别 6.7内部函数和外部函数
6.1函数分类 C语言中可从不同的角度对函数分类。
1. 从函数定义的角度,函数分为库函数和用户定义函数。
(1)库函数 由C系统提供,用户无须定义, 不必在程序中作类型说 明,需在程序前包含有该函数原型的头文件即可在程序中直接 调 用。如printf()、scanf()、getchar()、putchar ()等函数 均属库函数。 (2)用户定义函数 由用户按需要写的函数。用户自定义的函数在主调函数中对其 进行类型说明。
6.2函数
例6.2比较两个小朋友的个子,输出个子较高的。 float max(float a,float b) { if(a>b)return a; else return b; } void main() { float x,y,z; printf("input two numbers:\n"); scanf("%f,%f",&x,&y); z=max(x,y); printf("max=%f\n",z);
改例6.2如下:
6.2函数
main() { float max(float a,float b); float x,y,z; printf("input two numbers:\n"); scanf("%f,%f",&x,&y); z=max(x,y); printf("max=%f\n",z); } float max(float a,float b) { if(a>b)return a; else return b; }

C语言程序设计教程(电子教案)

C语言程序设计教程(电子教案)
实用文档
学习目标
对C语言有一个概括的了解, 能够编写包含键盘输入、计算和 显示输出等操作的简单C程序。
4
主要内容
• C语言的产生与特点 • 简单C程序的组成 • C语言应用程序开发的基本步骤
5
1.1 C语言的产生及特点
C语言是为了编写系统程序而在1968年开始 研发的计算机高级语言
C语言表达能力强,使用灵活,程序结构清 晰,紧凑,可移植性好
指针 类型
17
基本数据类型说明符
整型:int long
字符型:char 实型:float
double long double
18
2.2 常 量
常量∶在程序运行过程中,其值不能被改 变的量。
一. 不同数制整型常量的表示
例如: 12 :十进制数 12
012 :八进制数 12(等于十进 制数10,用前导符0表示八进制数常量)
计算x+y+z,并将结 8果赋给变量sum
显示变量 sum的值
主函数 main()
一般C程序的组成
【例1-2】采用模块结构,改写例1-1的程序。 add(int x,int y,int z )
{ return(x+y+z);
}
函数add()
调用函数 add()
main() { int x,y,z; printf("Please Input Three Integers:\n "); scanf("%d,%d,%d ",&x,&y,&z);
4. 用‘\’ ’表示字符’ ,‘\”’表示字符”, ‘\\ ’表示字符\ 。
5. 用双引号括起来的字符序列表示字符串常量,其 中最后一个字符是字符串结束符‘\0’,不显式 地表示出来。如:“English” 。

C语言等级考试 第六章重点汇总

C语言等级考试 第六章重点汇总

度可由编译器根据初始值表中的初值个数来确定。
如:int a[]={1,3,5,7,9}; 由于初始值表中包含5个数据,所以a数组的长度隐含地
确定为5。需要注意的是:如果没有初始值表或初始值表
中初值个数少于数组实际长度时,则在定义数组时,其长 度是不能省略的。同时,在不指定数组长度的情况下进行
数组定义时,在初始值表中必须要列出所有元素的初值。
[案例6.7]从键盘为一个5*5整型数组赋值,找出其中的 最小值不能感显示出来。 程序如下: main() {int x[5][5], i, j, min; for(i=0;i<5;i++) for(j=0;j<5;j++) scanf(“%d”,&x[i][j]); min=x[0][0]; for(i=0;i<5;i++) for(i=0;i<5;i++) if(min> x[i][j]) min=x[i][j]; printf(“The min is:%d\n”,min); }
[案例6.4]从键盘输入20个不同整数,并检查整数10是否包含 在这些数据中,若是的话,它是第几个被输入的? 程序为: main( ) { int i, a[20]; for(i=0;i<20;i++) scanf(“%d”,&a[i]); for(i=0;i<20;i++) {if(a[i]==10) {printf(“10 is the position %d\n”,i+1); break; } } }
6.1.2一维数组元素的引用
1. 引用数组中的任意一个元素的形式:
数组名[下标表达式]
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CON:键盘(输入文件),显示器(输出文件)。
6.1.1文件系统概述
2、数据文件的存储形式
(1)字符文件(纯文本文件):每个字符用一个 ASCII码存储(即一个字符占一个字节)。 (2)二进制文件:以数据在内存中的形式原样存 于磁盘。 如:一个任意整数(int型),其二进制存储方式都 是占2个字节(16位);而字符存储方式所占字 节数=该数的数字个数。如:
6.1.1文件系统概述
3.标准文件系统(缓冲文件系统)非标准文件系统
内存
输出文件缓冲区 输出 输出 磁盘
程序数据区
输入文件缓冲区 输入 输入
(1)标准文件系统(非标准文件系统则没有缓冲区)
6.1.2 标准文件操作
每个被使用的文件都在内存中开辟一个区,用来存放文 件的有关信息。这些信息是保存在一个结构体类型的变量中。 该结构体类型是由系统定义的,取名为FILE。有的C版本在 stdio.h文件中有以下的类型定义(不同系统有区别,不必深究): typedef struct { int -fd; /* 文件号*/ int -cleft; /* 缓冲区中剩下的字符*/
6.1.2 标准文件操作--文件的读写举例
{printf(“cannot open infile\n”); exit(0); } if ((out=fopen(outfile,”w”))==NULL)
{printf(“cannot open outfile\n”);
exit(0); } while(!feop(in))fputc(fgetc(in),out); fclose(in);
fclose(out);
}
6.1.2 标准文件操作--文件的读写举例
运行情况如下: Enter the infile name: file1.c ↙ (输入原有磁盘文件名)
Enter the outfile name:
file2.c ↙
(输入新复制的磁盘文件名)
可用type命令验证。
6.1.2 标准文件操作--文件的读写举例
int -mode; /* 文件操作模式*/
char * -nextc; /* 下一个字符位置*/ char * -buff; /* 文件缓冲区位置*/ }FILE;
6.1.2 标准文件操作--File结构指针
有了FILE类型后,可以用它来定义若干个FILE类型的变量, 以便存放若干个文件的信息。例如,可以定义以下FILE类型 的数组。 FILE -efile [-MAXFILE]; 定义了一个结构体数组-efile[],它有-MAXFILE个元素, MAXFILE是一个符号常量,它的值是可使用文件的最大数目。 可以定义文件型指针变量。如 FILE *fp;
int型数 123 1234 二进制存储方式 2字节 2字节 字符存储方式 3字节 4字节
6.1.1文件系统概述
2、数据文件的存储形式
例如, 1268这个整数,在字符文件中用其ASCII码表示为: ‘1’ ‘2’ ‘6’ ‘8’ 49 50 54 56 即将数字表示成对应的字符序列。这里有4位数字,共 用了4个字符;一个字符占一个字节,故共用了4个字节。 而在二进制文件中,该数表示成相应的二进制数字: 010011110100 它只需要占用2个字节。
Enter the infile name:
file1.c ↙
(输入待存磁盘文件名)
Computer and C ↙ 输出:Computer and C 可用type命令验证。
6.1.2 标准文件操作--文件的读写举例
例12.2 将一个磁盘文件中的信息复制到另一个磁盘文件中。 #include”stdio.h” main() { FILE *in,*out;
一、fgetc()函数 从指定文件读入一个字符,该文件必须是以读或读写方式打 开的。fgetc函数的调用形式为 ch=fgetc(fp); fp为文件型指针变量,ch为字符变量。如果在执行fgetc读字符 时遇到文件结束符,函数返回一个文件结束标志EOF,EOF在 stdio.h中定义为-1。如果想从一个文本文件顺序读入字符并在屏 幕上显示出来,可以:
fp是一个指向FILE类型结构体的指针变量。可以使fp指向某 一个文件的结构体变量,从而通过该结构体变量中的文件信 息能够访问该文件。如果有N个文件,一般应设N个指针变量, 使它们分别指向N个文件,以实现对文件的访问。
6.1.2 标准文件操作--打开与关闭
和其它高级语言一样,对文件读写之前应该“打开”该文 件,在使用结束之后应关闭该文件。 12.3.1 文件的打开(fopen)函数 FILE 例如 fp=fopen(”A1”,”r”) *fp;
fp=fopen(文件名,使用文件方式);
给编译系统的三个信息: 1 需要打开的文件名;
它表示:要打开名字为A1的文 2 使用文件的方式; 件,使用文件方式为“读入”, 3 让哪一个指针变量指向被打开 fp指向A1文件。 的文件。
6.1.2 标准文件操作--文件打开方式参数
“r” “w” (只读) 为输入打开一个文本文件 (只写) 为输出打开一个文本文件
6.1.2 标准文件操作--文件打开方式参数的说明
5 如果不能实现“打开”的任务, fopen函数将会带回一个 出错信息(NULL值)。
6 用以上方式可以打开文本文件或二进制文件,这是ANSI C的规定。但C的不同版本可能有不同的规定。
7 在程序开始运行时,系统自动打开三个标准文件:标准输 入、标准输出、标准出错输出。
6.1.2 标准文件操作--文件的读写
ch=fgetc(fp); while (ch!=EOF) { putchar(ch); ch=fgetc(fp);
}
*EOF不是可输出字符,因此不能在屏幕上显示。这种方式 只能用在文本文件中。如果想顺序读入一个二进制文件中数 据,可以用feof() 函数。见下面: while(!feof(fp)) { c=fgetc(fp); … } /*这种方法也适用于文本文件。*/
{printf(“you forgot to enter a filename\n”); exit(0); }
6.1.2 标准文件操作--文件的读写举例
if ((in=fopen(argv[1], “r”))==NULL)
{printf(“cannot open source file\n”); exit(0); } if ((out=fopen(argv[2], “ w”))==NULL) {printf(“cannot open destination file\n”); exit(0); } while(!feop(in))
6.ቤተ መጻሕፍቲ ባይዱ.2 标准文件操作--文件的读写举例
例12.1 从键盘输入一些字符存到一个磁盘文件中,以“#”(不 包括“#”)结束,同时在键盘上显示这些字符。
#include”stdio.h”
main() { FILE *fp; char ch,filename[10]; printf(“Enter the infile name:\n”);
fputc(fgetc(in),out);
fclose(in); fclose(out); }
6.1.2 标准文件操作--读写文件中字符串的 函数
这类函数用于从文件中读写字符串,其原型为: char * fgets ( char * str , int n , FILE * stream ) ; 和 char * fputs ( char * str , FILE * stream ) ; 其中, fgets ( ) 函数从指针 stream 指定的文件中读 取 n – 1 个字符,把它送到由指针 str 指向的字符数 组中。例如: fgets ( databuf , 6 , fp ) ; 可将 fp 指定的文件中的5个字符读到 databuf 内存区 去。databuf 可以是定义的字符数组,也可以是动态 分配的内存区。
scanf(“%s”,filename);
if ((fp=fopen(filename,”w”))==NULL) {printf(“cannot open infile\n”); exit(0); }
6.1.2 标准文件操作--文件的读写举例
ch=getchar(); while(ch!=„#‟) { fputc(ch,fp); putchar(ch); ch=getchar(); } flose(fp); }
6.1.2 标准文件操作--文件的关闭(fclose)函数
在使用完一个文件后应该关闭它,以防止它再被误用。 格式: 例如: 另有: fclose(文件指针); fclose(fp); fcloseall( )函数,可同时关闭程序中打开的多个文件。
6.1.2 标准文件操作--文件的读写
fgetc函数和fputc函数(putc函数和 getc函数)--读写文件字符
第六章 C语言库函数
6.1文件操作库函数 6.2 内存管理库函数 6.3图形处理库函数 6.4操作系统库函数
6.1文件操作库函数
6.1.1文件系统 概述(理解) 6.1.2标准文件操作(重点) 6.1.3非标准文件操作(了解 )
6.1.1文件系统概述
1、文件
文件是存储在外存储器上信息的集合。
每个文件有唯一的文件名(主名.后缀)来标识。计算 机实现按名对文件进行读、写等有关操作。 广义上,操作系统将每一个与主机相联的输入输出设 备也看作是一个文件,操作方法上与普通文件一样。 DOS下两个专用设备文件名: PRN:打印机(输出文件)
“a”
“rb” “wb”
(追加) 向文本文件尾增加数据
(只读) 为输入打开一个二进制文件 (只写) 为输出打开一个二进制文件
“ab”
“r+” “w+”
(追加) 向二进制文件尾增加数据
相关文档
最新文档