我想从接收到的消息中提取数据包编号,并想与原始发送的packet_count比较并尝试以下代码
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));
尽管输出看起来相同,但字符串却不同。
输出:
Sliced no is: 0000
packet counter is: 0000
String compare result: 48
请指导如何使这两个字符串相等。
答案 0 :(得分:2)
sprintf(bufNew, "%04d", packet_counter);
很有可能会覆盖new
的终止0(因为正如其他人所说的那样,它已超出范围使用)。尝试将printf("Sliced no is: %s\n",new);
下移到bufNew[4]='\0';
下方,以便亲自查看。
要解决此问题,需要new
和bufNew
声明为5
:
char new[5];
char bufNew[5];