ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

文件的定义,文件操作函数,操作步骤以及注意事项等

2021-12-30 22:00:19  阅读:165  来源: 互联网

标签:文件 读取 fw int char 注意事项 sizeof 操作步骤



1.文件是什么,文件的唯一标识:三要素(路径,文件名,后缀)
    文件:储存在外部介质上的数据集合
2.文件操作函数
    2.1 fopen      返回值:文件指针FILE*    两个参数(第一个参数[文件名] 第二个参数[以什么方式打开文件] )
    2.2 fclose     参数只有一个(释放的文件流指针)   1.防止内存泄露  2.未释放再次打开可能发生错误
    2.3 fread     返回值:返回实际读取的项目数   四个参数(1.从文件中读取的数据存放在内存的哪个区域, 2.读取的项目的大小, 3.读取的最大项目数,4.从哪个文件里读取)
                  fread返回值如果小于输入缓存区大小  则一定读取完毕   否则不能保证一定读完
    2.4 fwrite    返回值:返回实际写入的项数   四个参数(1.准备写入到文件里的数据, 2.写入的项目的大小 3.写入的项目的个数 4.被写入的文件在哪)
    2.5 fseek     调整文件中光标的位置        SEEK_SET  SEEK_CUR  SEEK_END
    2.6 ftell     告诉我光标在文件中的位置   返回值是一个整形值    代表着光标距离文件开始位置多少字节
3.数据流(输入流和输出流)  标准输入流设备:键盘    标准输出流设备:屏幕
    3.1 文本数据流(文本文件 .TXT)           
    3.2 二进制数据流(二进制文件 歌曲 视频 图片 可执行文件)
    3.3 输入流(从文件向内存中写)  输出流(从内存向文件中写)

4.文件操作步骤:  1.打开文件  2.执行文件操作函数  3.关闭文件
5.文件指针
6.文件的绝对路径和相对路径

7.分别对于二进制文件和文本文件进行读写
8.注意事项:fopen函数 如果模式为"w"  则如果里面有数据 会清空再打开  导致数据丢失

int main()
{
	const char* path = "1.txt";//相对路径
	const char* path2 = "C:\\1.txt";//绝对路径
	FILE* fw = fopen(path,"w");
	//int a = 123456;
	const char* str = "123456";
	//fwrite(&a, sizeof(int), 1,fw);
	fwrite(str, sizeof(char), strlen(str), fw);
	fclose(fw);
	return 0;
}

 

//从内存向文本文件写数据(输出流)
int main()
{
	const char* path = "xyz.txt";//相对路径
	FILE* fw= fopen(path, "w");//通过写的方式打开
	const char* str = "hello world";
	fwrite(str, sizeof(char), strlen(str), fw);
	fclose(fw);
	return 0;
}
//从文本文件中读数据写到内存中(输入流)
int main()
{
	const char* path = "xyz.txt";//相对路径
	FILE* fr = fopen(path, "r");//只读权限打开
	//需要申请一块内存用于存储 从文件中分部读取的数据
	char buff[100];
	int len=fread(buff, sizeof(char),100 , fr);
	//一个一个字符来读取的循环方法
	char cr;
	while (fread(buff, sizeof(char), 1, fr) > 0)//读取成功:1;读取失败:0
	{
		printf("%c",cr);
	}
	printf("\n");
	fclose(fr);
	return 0;
}
//从内存向二进制文件写数据(输出流)
int main()
{
	FILE* fwb = fopen("abc.txt", "wb");//通过写的方式打开
	int arr[] = { 12,23,34,45,56,67,78,89,90,100 };
	fwrite(arr,sizeof(arr), sizeof(arr)/sizeof(arr[0]),fwb);
	fclose(fwb);
	return 0;
}
//从二进制文件中读数据 写到内存中(输入流)
int main()
{
	FILE* frb = fopen("abc.txt", "rb");//只读权限打开
	//需要申请一块内存用于存储 从文件中分部读取的数据
	int tmp;//类似上面的buff
	while (fread(&tmp, sizeof(int), 1, frb) > 0)//读取成功:1;读取失败:0
	{
		printf("%d", tmp);
	}
	printf("\n");
	fclose(frb);
	return 0;
}
//fseek
int main()
{
	const char* str = "www.txt";
		FILE*fw=fopen(str, "w");
		const char* str1 = "hello world";
		const char* str2 = "wwww,yyyyy";
		fwrite(str1, sizeof(char), strlen(str1), fw);
		fseek(fw,0,SEEK_SET);//调整参数的位置
		fseek(fw, -5, SEEK_END);//调整参数的位置,向左走5步,SEEK_END表示从结束位置开始
		fseek(fw, 8, SEEK_SET);//调整参数的位置,从开始位置向右走8步,SEEK_SET表示开始位置
		fwrite(str2, sizeof(char), strlen(str2), fw);
		long flg = ftell(fw);//ftell:获取文件指针的当前位置
		printf("%d\n", flg);
		fseek(fw, -10, SEEK_CUR); //SEEK_CUR表示当前位置
		flg = ftell(fw);
		printf("%d\n", flg);
		fclose(fw);
	return 0;
}

标签:文件,读取,fw,int,char,注意事项,sizeof,操作步骤
来源: https://blog.csdn.net/weixin_58368590/article/details/122246114

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有