// strncpy(UdpPack.da
// if((char *)(&(theApp.m_curLiuyanLog))){MessageBox("留言不为空");}
memcpy(UdpPack.da
晕死,不知道为什么用strncpy什么都复制不进去,只能用memcpy。
strcpy是拷贝字符串,以\0为标志结束(即一旦遇到数据值为0的内存地址拷贝过程即停止)
strcpy的原型为
char *strcpy(char *dest, const char *src)
而memcpy是给定来源和目标后,拷贝指定大小n的内存数据,而不管拷贝的内容是什么(不仅限于字符)
memcpy的原型为
void *memcpy(void *dest, const void *src, size_t n);
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
const int MaxLength = 20;
char String1[] = "No man is an islands!";
char String2[MaxLength+1];
strncpy(String2,String1,MaxLength);
String2[MaxLength]=NULL;//改了这里!
/*原因:
char * strncpy(char *s1,char *s2,size_t n);
将字符串s2中最多n个字符复制到字符数组s1中,返回指向s1的指针。
注意:如果源串长度大于n,则strncpy不复制最后的'\0'结束符,所以是不安全的,复制完后需要手动添加字符串的结束符才行。
*/
cout << "String1: " << String1 << endl;
cout << "String2: " << String2 << endl;
return 0;
}
评论