如下测试:
#include <iostream> #include <string.h> using namespace std; int main() { char a[]="123123"; cout<<strlen(a)<<endl; cout<<sizeof(a)<<endl; char b[100] = "123123"; cout<<strlen(b)<<endl; cout<<sizeof(b)<<endl; }
结果是:
6 7
6
100
strcpy在拷贝字符串的时候,会把src最后的'\0'也复制过去。
在进行网络数据收发的时候,尤其是使用tcp协议时需要特别注意。因为在tcp基础上,我们往往会先传数据长度,这时候用sizeof和strlen来获取字符串长度是有差别的,会导致程序行为异常。