char e[14]={'I','s','0','a','m','n','h','a','p','p','y','\0'};
printf("%s\n",e+5);//打印从第六个字符开始的后续字符,e+5表示把数组指针移到第6位
printf("%s\n",&e[5]);//打印从第六个字符开始的后续字符,&e[5]表示即第6位的地址,这一句表示第6个字地址开始打印
char sendMessage[68]= {0};
char a[68]= {0};
sendMessage[0] = 0xAB;
sendMessage[1] = 0xA5;
sendMessage[2] = 0x00;
sendMessage[3] = 0x1D;
sendMessage[4] = 0x00;
sendMessage[5] = 0x01;
strcpy(&sendMessage[6],"User,Password;admin,123456;");
sendMessage[33] = 0xDC;
sendMessage[34] = 0xAB;
sendMessage[35] = 0xA5;
sendMessage[36] = 0x00;
sendMessage[37] = 0x1D;
sendMessage[38] = 0x00;
sendMessage[39] = 0x01;
strcpy(&sendMessage[40],"User,Password;admin,789009;");
sendMessage[68] = 0xDC;
char b[27]={'\0'};
/*
strncpy(b,sendMessage,7,27);
printf("%s\n",b);
memcpy(a,sendMessage,68);
memset(b, 0, 68);
memcpy(b, a + 34, 68);
printf("%s\n",b);
*/
memcpy(b, &sendMessage[6], 33);
printf("%s\n",b);
memmove(&sendMessage[0], &sendMessage[6], 33);
printf("%s\n",sendMessage);
int length = sizeof(sendMessage);
printf("1==========================\n");
printf("%d\n",sizeof(sendMessage));//不会有00问题
printf("%d\n",strlen(sendMessage));//会有00问题
printf("2==========================\n");
char tt[33]={0};
memcpy(tt,sendMessage,33);//不会有00问题
printf("%s\n",sendMessage);
printf("%s\n",tt);
printf("3==========================\n");
for(int i=0;i<33;i++){
printf("%c\n",tt[i]);//这里证明memcpy没有00问题
}
printf("4==========================\n");
strcat(sendMessage,tt);
for(int i=0;i<66;i++){
printf("%c\n",sendMessage[i]);//这里证明memcpy没有00问题
}
关于字符数组的指针移动操作
最新推荐文章于 2022-03-03 20:02:07 发布