C 切片字符串和字符缓冲区不相等
我想从收到的消息中提取数据包编号,并与最初发送的数据包计数进行比较,然后尝试使用以下代码C 切片字符串和字符缓冲区不相等,c,C,我想从收到的消息中提取数据包编号,并与最初发送的数据包计数进行比较,然后尝试使用以下代码 char string[] = "Hello client 0000!"; char new[4]; char bufNew[4]; int i=0; int count=0; int num=0; int packet_counter=0; for (i=13;i<17;i++) { new[count] = string[i]; count = cou
char string[] = "Hello client 0000!";
char new[4];
char bufNew[4];
int i=0;
int count=0;
int num=0;
int packet_counter=0;
for (i=13;i<17;i++)
{
new[count] = string[i];
count = count+1;
}
new[4]='\0';
printf("Sliced no is: %s\n",new);
sprintf(bufNew, "%04d", packet_counter);
bufNew[4]='\0';
printf("packet counter is: %s\n",bufNew);
printf("String compare result: %d\n",strcmp(new,bufNew));
请指导如何使这两个字符串相等。可能是
sprintf(bufNew,“%04d”,packet\u counter)
覆盖了new
的终止0(因为正如其他人所说,它的使用超出了其范围)。尝试移动printf(“切片编号为:%s\n”,新建)代码>下方bufNew[4]='\0'代码>自己查看
要修复它,new
和bufNew
需要声明大小5
:
char new[5];
char bufNew[5];
新建和bufNew
5个字符或使用strncmp
。您的4个字符串没有空终止字节的空间。new[4]
和bufNew[4]
超出范围。是-再次计算bean:(
char new[5];
char bufNew[5];