strcpy 一个二进程文件的字节会怎样?

展示一下二进制文件内部是什么:
本质上就是一个个字符。通过一定的文件格式,标准(我觉得就像一些程序)写入到文件中,我们可以通过系统软件去解读它(就像序列化和反序列化)

  • 可执行文件ELF格式(至于ELF究竟是什么,去翻《程序员的自我修养》吧,书上极其详细,而我觉得我这部分看过来却只是一知半解)
    a.out
    图片:pdf
    pdf

视频:mp4

mp4
int fd=open("a.txt",O_RDONLY);
int fd2=open("b.txt",O_WRONLY|O_APPEND);
read(fd,buf,BUFSIZE);
strcpy(buf2,buf);
write(fd2,buf2,BUFSIZE);
如果我们用这样一段代码去复制二进制文件,得到的文件是错误的。
但原因是什么呢?

我收获到的经验是如果想要用buf去复制整个文件,在复制的过程中万万要小心。
这些乱码啊是可能包含’\0’这个空字符的,这意味着我们如果使用strcpy这种通过判断是否到’\0’去复制字符串的函数,是有可能(基本上就会)丢失掉文件一部分的信息。使用memcpy,它是一个字节一个字节复制。就可以避免信息丢失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>