用计算机程序解决实际问题时,在待处理豁得出结果的数据量较大情况下,一般采用读写外部存储介质(如光盘,磁盘,u盘)中的数据。数据一般是以文件组织的形式存储。因此,读写数据就是读写外存中的文件数据。
文件的定义:
相关数据的集合。计算机中的程序数据,文档通常都组织成文件存放在外存储器中,由于输入输出设备具有字节流特征,所以操作系统也罢他们看作文件。
缓冲文件系统;
系统在主存中开辟的,用来临时存放输入输出数据的区域,称为输入输出缓冲区(简称缓冲区)。例如,现将输入的信息送到缓冲区,然后从韩冲去取出数据。
文件的打开与关闭;
文件在读写之前应该“打开”,在使用结束之后应该及时“关闭”。
1.文件的打开
fopen ()是ANSI C 标准函数库stdio.h中声明的函数,用于打开文件,其原型为:
FILE *fopen(const char *filename ,const char *mode);
该函数的功能是:一mode制定的方式打开由filename指定的文件。若打开成功,则返回一个与所指文件相关联的字节流文件指针,用于后续的文件操作。若打开出错,则返回一个空指针(NULL)
例如:
FILE *fp=fopen("f.txt","r");
表示函数fopen以“r"(只读)方式打开名为f.tet的文件,并将返回的指向f.tet文件的字节流文件指针赋给fp。这样fp就对文件f.tet相关联,然后就可以通过fp对f.txt进行操作。
说明:
(1)用filename 表示要打开的文件名时,文件名前面可以带盘符和路径。例如:
FILE *fp=fopen("c:\\my\\f.txt","r");
(2)打开指定文件后,对指定文件操作前,应该先判断指定文件是否被打开。例如:
FILE *fp=fopen("c:\\my\\f.txt","r");
if(fp==NULL)
{
printf("Cannot open this file!\n");
exit 1; //关闭所有文件,终止程序执行;
}
2.文件的关闭:
在指定文件使用结束后及时关闭,以使文件指针与文件”脱钩“,释放它所占有的系统资源,防止文件丢失数据或被误用。关闭文件使用fclose函数;
fclose 是ANSI C 标注库函数stdio.h中声明的函数,其原型为:
int close(FILE *p);
它的功能是关闭与文件指针fp关联的文件,调用成功返回0,否则,返回EOF(-1)。
3.文本文件的读写:
例如:将一行字符逐个写入文件cx.txt:
#include <stdio.h>
int main()
{
FILE *fp; // 定义文件指针
char ch;
if((fp=fopen("cx.txt","w"))==NULL)
{
printf("cannot open this file\n");
exit (0);
}
ch = getchar();
while(ch != '\n')
{
fputc(ch, fp);
ch =getchar();
}
fclose(fp);
printf("\n");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *in;
FILE *out;
char infile[256];
char outfile[256];
char c;
printf("源文件名?");
scanf("%s",outfile);
printf("目标文件名?");
scanf("%s",outfile);
if((in = fopen(infile, "r"))==NULL)
{
printf("无法打开输入文件%s\n",infile);
exit (1);
}
if((out = fopen(outfile, "r"))==NULL)
{
printf("无法打开输入文件%s\n",outfile);
exit (1);
}
c = fgetc(in);
while(c != EOF)
{
fputc(c, out);
c =fgetc(in);
}
fclose(in);
fclose(out);
return 0;
}
文件打开方式