从接收缓冲区中删除第一个字符

时间:2015-08-27 12:33:45

标签: c

我在rmsg变量中收到了一条消息。如果此缓冲区中的第一个字符为“1”,我想删除此字符并发送剩余的消息。

有没有办法做这样的事情:

if(rmsg[0]=='1')

//remove the first character in rmsg
strncpy(newbuf,rmsg,rmsglen)

如果这不是正确的方向可以有人告诉我怎么样?

3 个答案:

答案 0 :(得分:3)

我想这是你想要在这种情况下实现的目标:

if (rmsg[0] == '1') 
    memmove(rmsg, rmsg+1, strlen(rmsg));

此处,在使用上面发布的memmove()函数后,您的rmsg字符串将包含之前的内容,而不包含第一个字符(即=='1'),所以现在你可以随心所欲地发送它。

现场演示:http://ideone.com/1dJjAn
有关memmove() func:http://www.cplusplus.com/reference/cstring/memmove/

的更多信息

答案 1 :(得分:2)

您可以使用第二个字符作为基本地址发送,并将长度减少1:

   if (rmsglen > 0 && rmsg[0]=='1')
      send (&rmsg[1], rmsglen-1);

答案 2 :(得分:2)

如果你想将字符串复制到新字符串,期望第一个字符你可以做这样的事情 -

char rmsg[]="1 I can go";
char *newbuf;
newbuf=malloc(strlen(msg));
if(rmsg[0]=='1')
{
    strncpy(newbuf,&rmsg[1],rmsglen-1);  
}
free(newbuf);

小例子 - https://ideone.com/IotuBy