stl C语言文件读写

1、fopen_s、_wfopen_s

描述:
       打开文件。

函数定义:

errno_t fopen_s(FILE** stream, char const* fileName, char const* mode);

errno_t _wfopen_s(FILE** stream, wchar_t const* fileName, wchar_t const* mode);

参数:
       stream - 指向控制打开的文件流的对象的指针
       filename - 要关联文件流到的文件名
       mode - 确定文件访问模式

文件访问模式字符串含义解释若文件已存在的行动若文件不存在的行动
“r”为读取打开文件从起始读取打开失败
“rb”以二进制模式读为读取打开文件从起始读取打开失败
“w”为写入创建文件销毁内容创建新文件
“wb”以二进制模式写为写入创建文件销毁内容创建新文件
“a”追加追加到文件写入到末尾创建新文件
“r+”扩展读为读取/写入打开文件从起始读取错误
“r+”扩展写为读取/写入创建文件销毁内容创建新文件
“a+”扩展追加为读取/写入打开文件写入到末尾创建新文件

返回值:
       打开失败返回0,否则返回1。

2、std::fread

描述:
       读取数据。

函数定义:

std::size_t fread( void* buffer, std::size_t size, std::size_t count, std::FILE* stream );

参数:
       buffer - 指向要读取的数组中首个对象的指针
       size - 每个对象的字节大小
       count - 要读取的对象数
       stream - 读取来源的输入文件流

返回值:
       返回成功读取的对象数,若出现错误或文件尾条件,则可能小于 count 。

3、std::write

描述:
       写入数据。

函数定义:

std::size_t fwrite( const void* buffer, std::size_t size, std::size_t count, std::FILE* stream );

参数:
       buffer - 指向数组中要被写入的首个对象的指针
       size - 每个对象的大小
       count - 要被写入的对象数
       stream - 指向输出流的指针

返回值:
       返回成功写入的对象数,若错误发生则可能小于 count 。

4、std::fclose

描述:
       关闭文件。

函数定义:

int fclose( std::FILE* stream );

参数:
       stream - 要关闭的文件流

返回值:
       成功时为 ​0​ ,否则为 EOF 。

5、示例

int main()
{
	std::size_t unSumData = 1020;//每次读写文件元素的大小
	std::size_t unOneData = 0;	//每次读出或写入的元素大小
	char* pData = new char[unSumData];
	std::memset(pData, 0, unSumData);

	std::FILE* pFileSourve = nullptr;	//源文件指针
	std::FILE* pFileTarget = nullptr;	//目标文件指针

	//打开文件
	errno_t nErr = fopen_s(&pFileSourve, "E:\\temporary\\老杨.jpeg", "rb"); 
	if (nErr != 0)
	{
		std::cout << "打开文件失败" << std::endl;
		return -1;
	}
	nErr = fopen_s(&pFileTarget, "E:\\temporary\\老杨2.jpeg", "wb");
	if (nErr != 0)
	{
		std::fclose(pFileSourve);
		std::cout << "创建文件失败" << std::endl;
		return -1;
	}

	//读取文件和写入文件
	while ((unOneData = std::fread(pData,1, unSumData,pFileSourve)) > 0)//读取数据
	{
		std::fwrite(pData, 1, unOneData, pFileTarget);//写入数据
		std::memset(pData,0, unSumData);
	}

	//关闭文件
	std::fclose(pFileSourve);
	std::fclose(pFileTarget);

	delete[] pData;

	std::cout << "拷贝成功" << std::endl;
 }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值