在C语言中,`memcpy`和`strncpy`是处理内存与字符串操作的两大利器。它们各有千秋,但今天重点聊聊当源字符串长度小于指定的n值时,这两个函数的表现会如何?🤔
首先,`memcpy`是一个冷酷的“复制者”,它只关心字节数,完全无视字符串结束符`\0`的存在。假设源字符串长度为5,而n=8,那么`memcpy`会将这5个字节完整拷贝到目标地址,并填充剩下的3个字节为未知内容(可能是随机数据)。😱
而`strncpy`则更像一个细心的“裁剪师”。它严格按照n的限制来截取源字符串,如果源字符串长度小于n,则会在末尾自动补足空字符`\0`,确保结果仍是合法的字符串。例如,源字符串“hello”长度为5,若n设为10,它会完整复制并追加5个`\0`。😅
总结来说,两者各有适用场景:`memcpy`适合非字符串数据的高效搬运,而`strncpy`更适合对字符串进行安全操作。掌握这些细节,可以让代码运行得更加稳健!🚀
编程小技巧 memcpy strncpy C语言