如下测试:

#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来获取字符串长度是有差别的,会导致程序行为异常。

 

posted on 2020-12-21 15:35  SimbaStar  阅读(461)  评论(0编辑  收藏  举报