请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

TcpWrite()函数中的问题

https://img1.sycdn.imooc.com//szimg/64cf648e09ed529712510454.jpg

上面的代码是在数组中开辟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;
}


结果:

https://img1.sycdn.imooc.com//szimg/64cf6540096eb94809260357.jpg


正在回答 回答被采纳积分+3

1回答

长歌_吴从周 2023-08-07 12:36:45

你要把字符串的长度从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;

}


https://img1.sycdn.imooc.com//szimg/64d074da09d9dc5514100238.jpg

0 回复 有任何疑惑可以回复我~
  • 提问者 weixin_慕娘6306342 #1
    我觉得你并不应该将数组的前四个字节解析到变量ilen中 ilen变量的值本来就是49 我觉得解析应该解析到一个新定义的变量中 如果打印出来新变量的值还是49的话 就证明确实是ilen的值被写入了数组中 你觉得这个思路对吗
    回复 有任何疑惑可以回复我~ 2023-08-07 14:22:34
  • 是对的
    回复 有任何疑惑可以回复我~ 2023-08-09 07:52:36
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号