字符串拼接以及Int的拼接
题目
数据固定标识(6个字节,分别为0x00,0x00,0x01,0x00,0x01,0xb4)+数据长度(4个字节 网络字节序)+数据
题目中是要求发生上面的内容要求然后发送给服务器,我就想到用字符串拼接的方式。看答案后发现可以用结构体,跟简单一点
这里就说一下如何用字符串拼接吧
首先字符串拼接想到的就是一个strcat(),它是把第二个参数的字符串拼接到第一个参数所指的字符串,但是需要注意的是他是根据'\0'去拼接的,所以我们需要再字符串中加上\0
然后是int如何拼接,可以使用sprintf(),好久没用就忘记了这个函数
最后,是calloc(个数,大小),这个函数会去堆区申请一片空间,并且把这片空间置为'\0'
最开始用的是malloc,但是这样就有问题,因为内存中存放的不是'\0',会导致strcat()这个函数出现问题,上面说过,他是根据'\0'判断字符串结束的,然后就在'\0'这个位置上继续拼接,直到遇到第二个字符串的'\0'为止。
int main(){
char str[7]={'a','b','c','d','5','6','\0'};
char str1[4]={'1','2','3','\0'};
char *p =(char *) calloc(20,sizeof(char));
int x=555;
char x_num[32];
strcat(p,str);
sprintf(x_num,"%d",x);
strcat(p,x_num);
strcat(p,str1);
printf("%s\n",p);
free(p);
p=NULL;
}