c语言中的文件

用计算机程序解决实际问题时,在待处理豁得出结果的数据量较大情况下,一般采用读写外部存储介质(如光盘,磁盘,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; 
}

                                                                                      文件打开方式
r:                                         开一个文本文件只读
w:                                       打开一个文本文件只写
a:                                        对一个文本文件添加
rb:                                      打开一个 二进制文件只读
wb                                     打开一个 二进制文件只写
ab:                                     对一个 二进制文件添加
r+:                                      打开一个文本文件读/写
w+:                                    生成一个文本文件读/写
a+:                                     打开一个文本文件读/写
rb+:                                   打开二进制文件读/写
wb+:                                  生成二进制文件读/写
ab+:                                  打开二进制文件读/写

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值