还有兄弟在吗?问一个文件操作的问题:)

yiminggw 2004-12-02 01:42:45
有两个文件a,b

我要把a放进b的尾部
a的格式是二进制的01代码...


我用二进制的方式打开a是不是说现在a里就是以二进制的形式存在?
fpD=fopen("a.txt","rb");
fpS=fopen("b.txt","rb+");

我发现那些读取函数fgetc,fgets,等都是针对字符的操作
我曾想用 int filesize=ftell(fpD);
fread(fpS,filesize,1,fpD);操作,但是不成功,请教各位有什么办法?

谢了:)


...全文
159 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
somedummy 2004-12-04
  • 打赏
  • 举报
回复
……至少到目前为止所有的文件组织形式都是二进制的……
Flood1984 2004-12-04
  • 打赏
  • 举报
回复
先将A的指针移动到文件末尾,然后打开B,
读一个就向A里写一个
Leaveye 2004-12-04
  • 打赏
  • 举报
回复
直接读取二进制文件不就成了。只不过读出的缓冲区以字节为单位访问而已。
alanzhu 2004-12-03
  • 打赏
  • 举报
回复
不大清楚你的问题,不过隐约觉得用struct可以解决,呵呵
alanzhu 2004-12-02
  • 打赏
  • 举报
回复
应该是
int filesize=ftell(fpD);
char *tmpc=new char[filesize];
fread(tmpc,1,filesize,fpD);
fwrite(tmpc,1,filesize,fpS);
yiminggw 2004-12-02
  • 打赏
  • 举报
回复
int filesize=ftell(fpD);
char *tmpc=new char[filesize];
fread(tmpc,filesize,1,fpD);
fwrite(tmpc,filesize,1,fpS);


我这样写什么也读不到???
yiminggw 2004-12-02
  • 打赏
  • 举报
回复
再问一个:)
能不能把文件直接转为010101的形式存在一个char *tmpc=new char[filesize]中?
我的方法是先读字符然后再转

但以后怎么把它再转为文本格式?[逆操作?感觉太麻烦,有没有简单点的:]
Leaveye 2004-12-02
  • 打赏
  • 举报
回复
不可以直接从文件读到文件。
要有个中间的缓冲区。
用 fread 读,用 fwrite 写,辅助 fseek 定位到某一字节。

int fread(void *buf, int size, int count, FILE *fp)
从文件的当前位置开始中读取size*count个字节的数据
buf 存放读入数据的指针(输出)
size 每个数据单位的字节数
count 读入的数据单位个数
返回值:读入的字节数据,如果小于要求的字节数据,说明读到了文件结尾或出错

int fwrite(void *buf, int size, int count, FILE *fp)
往文件的当前位置开始写入size*count个字节的数据
buf 存放要写入的数据
size 每个数据单位的字节数
count 读入的数据单位个数
返回值:写入的字节数据,如果小于要求的字节数据,说明写到了文件结尾或出错

int fseek(FILE *fp, LONG offset, int origin)
设定文件操作指针位置
fp 文件指针
offset 相对于origin规定的偏移位置量
origin 指针移动的起始位置,可设置为以下三种情况:
SEEK_SET 文件开始位置
SEEK_CUR 文件当前位置
SEEK_END 文件结束位置
返回值:0表示成功,其他表示失败。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧