Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        4年前关闭。
                                                                                            
                
        
我试图从一个数组中的一些偏移量开始将一个数组中的'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字节从内容数组复制到另一个buffer2,然后将其复制到缓冲区,结果仍然相同。

最佳答案

从某种意义上说,strlen尝试计算字符串的长度,即从缓冲区的开头一直计数字节直到遇到'\ 0',而memcpy仅对字节起作用。

我想您的问题源于对此的不了解。

您可能有一个752的字符串,并且正在尝试从偏移量到缓冲区的开头之间复制一些字节(此信息从您的问题中不是很清楚)。但是,在此过程中,您的'\ 0'可能会保留在同一位置,从而导致惊讶地给出相同的结果。

我的建议是区分字符串和普通缓冲区,并对这两个操作使用适当的系统调用。

关于c - memcpy()复制的字节多于预期的字节数。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34348056/

10-11 23:04
查看更多