调用memcpy函数后再调用strlen函数查看memcpy第一个参数的长度,结果不变,不知道怎么回事

C++语言 码拜 8年前 (2017-05-08) 2027次浏览
char jmh[20005]={0};
while (!feof(fpSrc))    fpSrc是一个文件指针,文件大小是20K
{
memset(buff, 0, 8);
fread(buff, sizeof(char), 8, fpSrc);
memcpy(jmh, buff,8);
cout <<strlen(jmh)<< endl;  显示的结果一直为3
}

本人想问的是为什么 strlen(jmh)的值会这样 ,循环完毕还是3

解决方案

80

strlen系列函数统计的是”\0″结尾的字符串,二进制文件数据是有可能有0的。memcpy本身就意味着可能有任意类型的数据,长度在你copy时就指定了。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明调用memcpy函数后再调用strlen函数查看memcpy第一个参数的长度,结果不变,不知道怎么回事
喜欢 (0)
[1034331897@qq.com]
分享 (0)