TcpWrite()函数中的问题
来源:4-2 解决TCP粘包和分包的问题

weixin_慕娘6306342
2023-08-06
上面的代码是在数组中开辟4个字节来存放数据的长度,
所以我写了下面代码,也是用数组前四个字节存放数据长度,后面的字节存放字符串内容?
但是为什么我输出字符串的数据时,只是输出了一个1? 输出的内容不应该是字符的长度和字符串的内容嘛?
输出字符串的长度时,长度为1? 字符串的长度不应该是字符串的长度加4个字节嘛?
#include<stdio.h> #include <arpa/inet.h> #include<string.h> int main() { char str[1024]; char *ptr=(char*)"厉害的很嘞啊实打实大萨达所大所多."; int ilen=strlen(ptr); printf("str=%s,len=%d\n",str,strlen(str)); memcpy(str,&ilen,4); memcpy(str+4,ptr,strlen(ptr)); printf("str=%s,len=%d\n",str,strlen(str)); return 0; }
结果:
写回答
1回答
-
长歌_吴从周
2023-08-07
你要把字符串的长度从Str中解析出来。
代码这么写:
#include<stdio.h>
#include <arpa/inet.h>
#include<string.h>
int main()
{
char str[1024];
char *ptr=(char*)"厉害的很嘞啊实打实大萨达所大所多.";
int ilen=strlen(ptr);
printf("str=%s,len=%d\n",str,strlen(str));
memcpy(str,&ilen,4);
memcpy(str+4,ptr,strlen(ptr));
memcpy(&ilen,str,4); // 解析出长度。
printf("str=%s,len=%d\n",str+4,ilen); // str要加4
return 0;
}
022023-08-09
相似问题