我在rmsg
变量中收到了一条消息。如果此缓冲区中的第一个字符为“1”,我想删除此字符并发送剩余的消息。
有没有办法做这样的事情:
if(rmsg[0]=='1')
//remove the first character in rmsg
strncpy(newbuf,rmsg,rmsglen)
如果这不是正确的方向可以有人告诉我怎么样?
答案 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);