下载此文档

9数据的永久存储--文件程序设计.ppt


文档分类:IT计算机 | 页数:约65页 举报非法文档有奖
1/65
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/65 下载此文档
文档列表 文档介绍
9数据的永久存储--文件程序设计
引言
到现在为止,我们所写的程序,不管是输入的原始数据,还是中间计算结果或最终计算结果,在程序运行结束退出后,就都无影无踪了。
你的原始数据输入之后存储到哪里了呢?
内存中的数据不能永在的文本文件,用于输出。
“a”: 建立一个新文本文件或以追加的方式打开一个已经存在的文本文件,用于输出。
“r+”: 打开一个已经存在的文本文件用于更新(意思是:既可以读又可以写)。
“w+”: 建立一个新的文本文件或覆盖一个已经存在的文本文件,用于更新。 “a+”: 建立一个新的文本文件或以追加的方式打开一个已存在的文本文件,用于更新。
二进制文件的打开方式
与文本文件的6种打开方式类似,只需在打开方式字符串中加入一个字符b
“rb”、“wb” 、“ab”
“rb+”、“wb+” 、“ab+”
其意义与文本文件的打开方式完全相同
注意:
用“w”、“w+”或“wb”、“wb+”方式打开一个文件时,如果文件已经存在,将覆盖已有的文件。
文件关闭
fclose(fp);
典型的文件建立代码(对应4个基本步骤)
FILE *fp;
if( (fp=fopen(“”,“r”) ) == NULL) { printf(“Cannot open file, strike any key exit ! ”); getch();    exit(1); }
//文件读写……
fclose(fp);
ANSI C的文件操作函数
字符读写函数
int fgetc(FILE *fp);
int fputc(int c, FILE *fp);
或者宏
int getc(FILE *fp);
int putc(int c, FILE *fp);
每次读写一个字符
例1:写一个程序把一个源程序文件做一个备份
可以把源程序看成是一个字符序列,采用字符读写方式即可实现
FILE *fp;

思考题
用命令行参数提供输入输出文件名,实现文件的拷贝命令
copyfile file1 file2
字符串读写
char *fgets(char *s, int n, FILE *fp);
从文件中读出n-1字符,存到s指向的字符数组中
int fputs(const char *s, FILE *fp);
例2:从文件中读一个含10个字符的字符串
使用fgets(str,11,fp)从fp指向的文件中读出n-1个字符送入字符数组str中, 末尾会自动加上'\0'。

例3 在文件中追加一个字符串
使用 fputs(“abcd”,fp)函数把字符串"abcd"写入fp所指的文件之中

格式化读写(文本文件)
int fscanf(FILE *fp, const char *format, ...);
int fprintf(FILE *fp, const char *format, ...);
按照某种格式对一组数据进行读写,常用于文本文件的读写
不能看出:当fp = stdin 或 stdout时 fscanf和fprintf与scanf和printf完全相同
例4 顺序读写学生信息
struct stu
{
char name[10];
int num;
int age;
char addr[15];
}boya[2],boyb[2],*pp,*qq;
pp=boya; //pp指向了数组boya
qq=boyb;
以读写的方式打开一个文本文件
FILE *fp;
if((fp=fopen(“","w+"))==NULL)
{
printf(“Cant open,strike any key!");
getch();
exit(1);
}
顺序建立文本文件
先输入原始数据暂存到数组boya中for(i=0;i<2;i++,pp++)
scanf("%s%d%d%s",
pp->name,&pp->num,
&pp->age,pp->addr);
注意pp已经指向数组的末尾
再把boya中的数据保存到文本文件中
pp=boya;
for(i=0;i<2;i++,pp++)
fprintf(fp,"%s %d %d %s\n",

9数据的永久存储--文件程序设计 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数65
  • 收藏数0 收藏
  • 顶次数0
  • 上传人落意心冢
  • 文件大小975 KB
  • 时间2022-06-04