C 语言程序设计_ch9文件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

9.3 文件的读写操作
9.3.1 fputc函数与fgetc函数
1.写一个字符到文件中的函数fputc 调用fputc函数的语法格式为: fputc(字符表达式 , 文件指针); 功能:向文件指针指定的文件中写一个字符
,字符表达式表示了一个字符,可以是字符常 量或字符变量。
fputc('H',fp); 向文件指针fp指定的文件中写字符'H'。
{ printf("cannot open this file \n"); exit(1);
/*打开失败,程序退出运行*/
}
else
{ for (c=fgetc(fp); c!=EOF; c=fgetc(fp))
/*循环从文件中读入字符*/
putchar(c);
/*在显示器上显示*/
fclose(fp);
9.2 文件操作的基本方法和相关概念
9.2.3 文件的打开
C语言把文件看作数据流--字节的序列。 字节流或二进制流。 ASCII文件与二进制文件。 文件的存取单位:字节。 流式文件:把文件中的数据看成由字节 组成的数据流,而不认为文件是由记录构 成的。
9.2 文件操作的基本方法和相关概念
9.2.3 文件的打开
p++; fclose(fp);
/*关闭文件*/
}
return 0;
}
9.3 文件的读写操作
9.3.2 fprintf函数与fscanf函数
fprintf和fscanf函数与scanf和printf 函数的功能 十分相似,都是格式化读写函数。
fprintf和fscanf函数文件读写的是磁盘数据文件 ,而scanf函数和printf函数读写的是标准输入文件 键盘和标准输出文件显示器。
这两个函数的调用格式为: fscanf(文件指针,格式字符串,输入表列); fprintf(文件指针,格式字符串,输出表列);
fscanf和fprintf两个函数适合于对ASCII文件的操 作。
例9.6编写程序,接收用户输入的若干整型数,直到读入-
1结束,将这些整数写入新创建的文件TEST中。
#include "stdio.h"
int i;
printf("\nFile text:");
if ((fp=fopen("d:\\data.txt","r"))!=NULL)
/*打打开开当文前件目d录at下a.t的xt文件data.txt*/
{ while (!feof(fp))
/*文件未结束*/
{ fscanf(fp,"%d",&i); /*从文件中读数据到变量i中*/
例9.3编写程序将例10.2中建立的文件A.dat的内容在屏幕 上显示。
#include "stdio.h"
#include "process.h"
int main() { FILE *fp;
/*定义文件指针*/
char c;
if((fp=fopen("A.dat","r"))==NULL) /*打开文件*/
9.2.6 C语言的设备文件
C语言将与主机相联的各种外部设备,如显示器、 打印机、键盘等外部设备也看作是一个文件,把向 显示器和打印机的输出看作是于对该设备文件的写 操作,而将从键盘的输入看作是于对该设备文件的 读操作。
设 备 文 件 的 标 准 输 入 文 件 ( 键 盘 )stdin 、 标 准 输 出 文 件 ( 显 示 器 )stdout 和 标 准 出 错 输 出 ( 出 错 信 息)stderr是由系统打开的,不需要定义文件指针、 打开文件和关闭文件,这些工作都由系统自动完成。
9.2.1 数据文件
数据文件是一组数据的有序集合。 如果文件存储在磁盘等外部介质上,文 件中的数据就可以永久(理论上)保存。 读操作:从外部介质中将文件中的数据 装入内存的操作 写操作:从内存中将数据输出到文件中 的操作。 C语言提供了若干可以进行读或写操作 的函数。
9.2 文件操作的基本方法和相关概念
if ((fp=fopen("A.dat","r"))==NULL)
/*打开文件,并判断是否成功打开*/
{ printf("cannot open this file \n");
/*打开失败,退出运行*/
exit(0);
}
else
{ 文件的读写等操作;
fclose(fp);
/*关闭文件*/
}
9.2 文件操作的基本方法和相关概念
/*关闭文件*/
}
return 0;
例9.4编写程序在文件A.dat中追加内容“ you”。
#include "stdio.h"
#include "process.h"
int main() { FILE *fp;
/*定义文件指针*/
char *p;
char string[]=" you ";
/*准备加入文件的字符串*/
C 语言程序设计
林小茶 Email: xiaocl@
第9章 文件
9.1 问题提出与程序示例 9.2 文件操作的基本方法和相关概念 9.3 文件的读写操作 9.4 文件的定位
9.1 问题提出与程序示例
调试一个排序的程序,要输入10个整数, 但是程序有些逻辑错误,那我们就要不止一 次的输入这10个整数。
scanf("%d",&i);
/*从键盘读入一个整数*/
while (i!=-1) { fprintf(fp,"%d ",i);
/*将整数写入文件TEST中 */
scanf("%d",&i);
} fclose(fp);
/*关闭文件*/
}
e{lsep运rin行tf(程"\n序ca,nn输ot 入op下en 列file数\n"据);:
9.2.2 文件类型指针
FILE是一种结构类型,用来描述文件的有关 信息。FILE结构类型是由系统定义的,该定义包 含在stdio.h 中。详细内容请参见书。
FILE *fp; 定义了文件指针fp以后,就意味着系统开辟一 个FILE结构的空间,用文件指针fp指向它。
9.2 文件操作的基本方法和相关概念
9.2.3 文件的打开
文件的打开使用fopen函数,调用fopen函数 的格式为:
文件指针变量=fopen(文件名,使用文件方式);
fp=fopen("data.txt","r"); 以只读方式打开文本文件“data.txt”。
执行fopen调用以后,fp所指结构中的数据存 储的将是磁盘文件“data.txt”的相关信息,可以 说,通过fopen函数建立了fp与文件data.txt的对 应关系。"r" 指定了打开文件的方式。
printf(" %d",i); /*在显示器上刚从文件读入的整数*/
} fclose(fp);
}
/*关从闭文文件件中*读/ 数据到变量i中
else { printf("\ncannot open file\n"); /*显示文件不能正确打开*/
exit(1); 关闭文件
}
return 0;
9.2 文件操作的基本方法和相关概念
9.2 文件操作的基本方法和相关概念
9.2.4 文件的关闭
文件操作结束以后,需要释放文件指针,使 文件指针与文件“脱钩”,文件被关闭以后,就 不能再对该文件进行操作。
调用fclose函数的语法格式为: fclose(文件指针);
fclose(fp); 关闭与文件指针fp建立联系的文件。关闭文 件的主要目的是避免文件的数据丢失。因为C编 译在读写文件数据时,使用了称为缓冲文件系统 的技术。
if((fp=fopen("A.dat","a"))==NULL)
/*打开文件*/
{ printf("cannot open this file \n"); exit(1);
/*打开失败,程序退出运行*/
}
else
{ for (p=string; *p!='\0'; fputc(*p,fp))
/*循环将字符串中的字符写到文件*/
}reteu1TxriEnt2(1S0);T3; 文6件5中4将-1存↙储整型数据:1 2 3 6 5 4。
打开文件的函数fopen为编译系统对文件的 操作提供了三个信息:
(1) 打开哪个文件,用文件名指定; (2) 使用哪种方式打开文件,在双引号中指定; (3) 使用哪个文件指针与打开的文件建立联系, 将返回值赋值给文件指针。
fp= fopen("d:\\data.txt","r");
文件的打开方式的方式共有12种,表9.1。
9.2.2 文件类型指针
在C语言中,对数据文件的所有操作都必须依 靠文件类型指针来完成。
对文件进行读或写操作之前,首先必须将想要 操作的数据文件与文件指针建立联系,然后通过这 些文件指针来操作相应的文件。
文件类型指针的定义方式是:
FILE *文件指针变量;
注意,FILE是大写字母。
9.2 文件操作的基本方法和相关概念
读写操作的开始位置,而每一次读写操作以 后,系统会使文件内部位置指针自动移动到 下一次开始的位置,文件内部位置指针不需 在程序中定义和使用,而是由系统自动设置 的。
9.3 文件的读写操作
9.3.1 fputc函数与fgetc函数
2. 从文件中读一个字符的函数fgetc
调用fgetc函数的语法格式为: fgetc(文件指针); 功能:从文件指针指定的文件中读入一个字符,该 字符的ASCII值作为函数的返回值,若返回值为EOF ,说明文件结束,EOF是文件结束标志,值为-1。 c=fgetc(fp); 从文件指针fp指定的文件中读一个字符并存入c变量 中,c是字符型变量。
9.2.3 文件的打开
fopen函数将返回一个文件类型的指针,指针不为空才 可以继续对文件做操作。
正确打开文件的程序段一般是: if ((fp=fopen("data.txt","r"))==NULL) { printf("cannot open this file \n");
exit(1); } else { 文件处理;}
9.2 文件操作的基本方法和相关概念
9.2.6 C语言的设备文件
printf 是 向 标 准 输 出 设 备 显 示 器 输 出 数 据 , 而 scanf是从标准输入文件上输入数据。对标准输出文 件和标准输入文件的操作不需要使用文件指针,由 系统自动完成。
9.3 文件的读写操作
C语言提供了下面几组函数用于文件的读 写操作: (1) 字符读写函数:fgetc和fputc (2) 格式化读写函数:fscanf和fprinf (3) 数据块读写函数:fread和fwrite (4) 字符串读写函数:fgets和fputs
例9.2编写程序接收键盘输入的一行字符,并将其写入一 个文件。
#include "stdio.h"
#include "process.h"
int main()
{ FILE *fp;
/*定义文件指针*/
char c;
if((fp=fopen("A.dat","w"))==NULL)
/*打开文件*/
{ printf("cannot open this file \n");
解决方法? 将数据一次性地存储在一个文件中,调 试程序时从该文件中读取数据到内存中。
例9.1 编写程序从文件data.txt中读取10个整数,并在显 示器上显示。
#include "stdio.h"
#include "process.h"
int main() { FILE *fp;
定/*义定文义件文指件针指f针p fp*/
/*打开失败,程序退出运行*/
exit(1);
}
else
for (c=getchar(); c!='\n'; c=getchar()) /*循环从键盘接收字符*/
fputc(c,fp);
/*写字符到文件中*/
fclose(fp);
/*关闭文件*/
return 0;
9.3 文件的读写操作
文件内部位置指针: 文件内部位置指针所指的位置是每一次
图9.2 缓冲文件系统
9.2 文件操作的基本方法和相关概念
9.2.5 文件操作顺序
第一步:定义文件指针; 第二步:打开文件,并判断是否成功打开,
若打开文件失败,程序退出运行状态; 第三步:对文件进行读写等操作; 第四步:关闭文件。
9.2 文件操作的基本方法和相关概念
FILE *fp;
/*定义文件指针*/
#include "process.h"
int main()针*/
if ((fp=fopen("c:\\TEST","w"))!=NULL) /*打开文件TEST*/
{ printf("\nPlease enter int ended with –1:");
相关文档
最新文档