<C/C++> FILE指针的使用

FILE 文件指针

 fopen_s/_wfopen_s: 打开文件

fclose: 关闭文件

fread: 读取

fwrite: 写入

打开:

errno_t fopen_s( 
   FILE** pFile,
   const char *filename,
   const char *mode 
);

pFile: FILE指针的地址

filename: 文件路径

mode: 打开模式

"r" : 打开一个存在的文件, 如果不存在,则返回失败

"w":  打开一个文件, 如果不存在则创建, 存在则清空内容

"a":  打开一个文件并将文件指针指向文件末尾, 文件不存在将创建文件

"r+": 打开一个文件用于读/写, 文件必须存在.

"w+": 打开一个文件用于写/读,文件不存在则创建

"a+": 打开一个文件用于读/追加, 文 件不存在则创建.

"b": 以二进制读/写文件, 如"rb", 'wb"


返回值:

0: 成功,否则就失败

读取:

size_t fread( 
   void *buffer,
   size_t size,
   size_t count,
   FILE *stream 
);
buffer: 缓冲区指针

size: 缓冲区单位大小,单位为字节

count: 最大读取个数

stream: 文件指针

实际最大读取的字节数为:size * count个

返回值:

实际读取的个数,可能会比count小,使用feof测试是否已经到达了文件末尾,发生错误, 返回0/EINVAL


写入:

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

buffer: 缓冲区地址

size: 缓冲区单位大小,单位为字节

count: 最大写入个数

stream: 文件指针

返回值:

实际写入的个数,如果比count小, 可能buffer数组越界, 发生错误, 返回0/EINVAL


测试代码:

void TestFile()
{
	FILE *pFile;
	fopen_s(&pFile, "test.txt", "wb");
	if (NULL == pFile)
	{
		cout << "创建/打开文件失败!" << endl;
		return;
	} 

	char buffer[10] = "string";
	int nByteWriten = fwrite(buffer, 1, strlen(buffer), pFile);
	cout << "成功写入" << nByteWriten << "个字节" << endl;
	fclose(pFile);

	char rdBuffer[10] = {0};
	fopen_s(&pFile, "test.txt", "rb");
	if (NULL == pFile)
	{
		cout << "打开文件失败!" << endl;
		return;
	}
	int nByteRead = fread(rdBuffer, 1, 10, pFile);
	cout << "成功读取" << nByteRead << "个字节: ";
	cout << rdBuffer << endl;

	fclose(pFile);
}

运行结果:



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值