memcpy()
和strcpy()
有什么区别?我试着在一个程序的帮助下找到它,但两者都给出了相同的输出。
int main()
{
char s[5]={'s','a','\0','c','h'};
char p[5];
char t[5];
strcpy(p,s);
memcpy(t,s,5);
printf("sachin p is [%s], t is [%s]",p,t);
return 0;
}
输出
sachin p is [sa], t is [sa]
发布于 2010-05-25 00:11:28
当遇到NUL ('\0'
)字符时,strcpy
会停止,而memcpy
不会。您在这里看不到效果,因为printf中的%s
也在NUL处停止。
发布于 2010-05-25 00:12:43
当找到源字符串的空终止符时,strcpy
将终止。memcpy
需要传递size参数。在您给出的例子中,在为两个字符数组找到空终止符之后,printf
语句会暂停,但是您会发现t[3]
和t[4]
也在其中复制了数据。
发布于 2012-12-05 20:36:32
strcpy
将字符从源逐个复制到目标,直到在源中找到NULL或'\0‘字符。
while((*dst++) = (*src++));
其中,as memcpy
将数据(而不是字符)从源复制到给定大小为n的目标,而与源中的数据无关。
如果您很清楚源文件包含字符以外其他内容,则应该使用memcpy
。对于加密数据或二进制数据,memcpy是理想的选择。
strcpy
已弃用,因此请使用strncpy
。
https://stackoverflow.com/questions/2898364
复制相似问题