我正在努力记住' x'从一个数组到另一个数组的字节从数组
中的某些偏移开始strlen(buf) // source array already contains 144 bytes
// len - 500 bytes
memcpy(&buf[start], &content[no_of_byes], len)
在执行strlen(buf)的这个操作之后,我得到总计752而不是644.我不明白原因。
我甚至尝试将500个字节从内容数组复制到另一个缓冲区2中,然后将其复制到缓冲区中,结果仍然相同。
答案 0 :(得分:0)
strlen尝试计算字符串的长度,从某种意义上说,它一直在计算缓冲区开头的字节,直到遇到'\ 0',而memcpy只能用于字节。
我猜你的问题源于不理解这一点。
你可能有一个752的字符串,并且正在尝试将一些字节从偏移量复制到缓冲区的开头(这个信息在你的问题中不是很清楚)。但是,在这个过程中,你的'\ 0'可能保持在相同的位置,导致strlen给出相同的结果。
我的建议是区分字符串和普通缓冲区,并对这两个操作使用适当的系统调用。