前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >fread、fwrite 一次读写一块

fread、fwrite 一次读写一块

作者头像
我与梦想有个约会
发布2023-10-20 16:12:59
2160
发布2023-10-20 16:12:59
举报
文章被收录于专栏:jiajia_dengjiajia_deng

fread、fwrite两个函数一般用于操作二进制文件,不适用处理文本文件,当然如果你非要用这两个函数来处理也没什么问题,只不过会相对麻烦一些,比如它不会给你读取出来的字符串末尾添加\0(fgets会在传入的buf末尾增加\0),也不会有什么结束标记判断。所以如果你如果用fread处理文本文件是非常苦恼的一件事情,一不小心就可能出错。

使用fread、fwrite函数复制一份文本文件。

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
FILE* pReadFile = fopen(“File.txt”, “r”);
if (NULL == pReadFile) return -1;
FILE* pWriteFile = fopen(“FileNew.txt”, “w”);
if (NULL == pWriteFile)
{
fclose(pReadFile);
return -1;
}
char* read[100] = {0};
int count = 0;
while ((count = fread(read, 1, 100, pReadFile)) > 0 /*>0证明没有到文件末尾*/)
{
// count返回值是读取到了多少个字节的内容
// 一个字节一个字节的读,不会丢弃任何一个字符
printf(“读取到了 %d 个字节 \n”, count);
// 写入到新文件中,一次写一个字节,写count次
fwrite(read, 1, count, pWriteFile);
// 写入到新文件中,一次写count个字节,写1次
// fwrite(read, count, 1, pWriteFile);
}
putchar(10);
// 将文件指针指向起始
rewind(pReadFile);
while ((count = fread(read, 100, 1, pReadFile)) > 0)
{
// 当读到最后一次时,fread发现读取的内容不满100个字节,会将其无情的丢弃
// 所以这样读取出来的内容会有差异
printf(“读取到了 %d 个字节 \n”, count);
}
fclose(pReadFile);
fclose(pWriteFile);
system(“pause”);
return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档