关于字符数组的指针移动操作

	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问题
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值