文件相关操作

文件指针  FILE *pf       打开函数 fopen        关闭函数 fclose
fgetc           从文件一次读取一个字符
fputc          从文件一次输出一个字符
fgets          从文件读取一串字符
fputs          从文件输出一串字符
fread           从文件选定读取多少内容
fwrite          从文件选定输出多少内容 
r                打开只读文件,文件不存在时不会创建   ( fgetc    fgets)
w               打开只写文件,文件不存在时会创建一个 ,打开后旧内容会清空 ( fputc   fputs)
a                打开添加文件,会添加在文件末尾,文件不存在时会创建一个 
r+              打开可读写文件,不没有会创建
w+             打开可读写文件,没有会创建
a+             打开可读写文件,没有会创建

void test_r()
{
	FILE *pf=NULL;
	pf=fopen("test.txt", "r");//  没有这个文件,并且不会创建,
	char ch;				//	然后手动添加这个文件 ,内容为abcdef
	ch=fgetc(pf);   
	printf("%c\n", ch);        //只有在只读模式下才能获取文件内内容
	char str[20];
	fgets(str,20,pf);
	printf("%s", str);	   //读取单个字符后光标移动,再读字符串时,第一个就读不到
	fclose(pf);					  
}
void test_w() 
{
	FILE *pf=NULL;
	pf=fopen("test_w.txt","w");//没有这个文件时,会创建一个
	/*
	以w只读方式打开文件后,会清空旧文件,再写新文件 
	*/	
	fputc('j',pf);           //写入单个字符
	char str[20]="my name is jack";
	fputs(str,pf);          //写入字符串,但是会在j之后
	printf("返回值为%d",fputs(str,pf)) ;//返回0,写入成功,返回-1失败
	fclose(pf); 
}
void test_a()
{
	FILE *pf=NULL;
	pf=fopen("test_a.txt", "a"); //没有文件会创建一个
	char str[20]="my name is jos";
	fputs(str,pf);   //与w打开写入先清空旧内容不同,a是不清空旧内容在旧内容后面添加 
	printf("返回值为%d",fputs(str,pf));//返回0,写入成功 
}
int main()
{
	//test_r();
	//test_w();		
	test_a(); 
	return 0;
} 

r+    可读可写,但不能自动创建文件

先读后写时:当光标在文件末尾时,可以写入

                      当光标在文件中间时,无法写入

                      当光标在文件开头时,写入多少内容就会覆盖多少内容

先写后读时:文件为空时,直接写入 

                      文件有内容时,要写入的内容超过原有文件,则完全覆盖,不超过则从文件开始的                         地方覆盖写入内容

w+  可写可读,可以自动创建文件

                       一般常用于先写后读,但要借助rewind( pf )函数,将光标1从文件末尾移动到开,                             头 才能够实现读取功能

fscanf ( pf," %s ", str  )         从文件指针pf指向的文件中读取字符串到str数组中

fprintf ( pf, " %s ", str  )         从str数组打印内容到文件指针pf指向的文件

sscanf ( str," %s ", arr )          从缓冲区str中读取内容到arr数组中

sprintf ( str," %s ", arr )            从arr数组中打印内容到缓冲区str中

feof()函数
    功能:判断是否到达文件末尾
    未到文件末尾,返回0
    到达文件末尾,返回非零 
    文件结束后,存在一个结束标志( EOF ),数值是-1 

while(!feof(pf))
	{
		printf("feof(pf)的返回值:%d    ",feof(pf));
		str[i]=fgetc(pf);
		printf("%c\n",str[i]);
		i++;
	}

rewind( pf )函数      将光标移动到文件开头的位置

ftell(pf) 函数                 告诉光标距离文件开头的字节数

	printf("ftell()-01返回光标距离开始的位置:%d\n",ftell(pf)); //0
	fgets(str01,19,pf);
	printf("ftell()-01返回光标距离开始的位置:%d\n",ftell(pf)); //18
	printf("%s\n",str01);

fseek ( ; ; ;)  函数            自定义设置标位置

        参数1:文件指针        pf
        参数2:偏移量            例50(向右偏移),-50(向左偏移)
        参数:参考点              SEEK_SET 开头        SEEK_COR       SEEK_END末尾

fseek(pf,5,SEEK_SET);
	printf("ftell()-01返回光标距离开始的位置:%d\n",ftell(pf));//5
	fgets(str01,19,pf);
	printf("ftell()-01返回光标距离开始的位置:%d\n",ftell(pf));//19 
	printf("%s\n",str01);
	
	fseek(pf,-5,SEEK_END); 
	printf("ftell()-01返回光标距离开始的位置:%d\n",ftell(pf));//14
	fgets(str01,19,pf);
	printf("ftell()-01返回光标距离开始的位置:%d\n",ftell(pf));//19
	printf("%s\n",str01);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值