永发信息网

C51单片机 截取数组buf中一串字符 从X位到Y位 赋值给变量uchar a

答案:3  悬赏:70  手机版
解决时间 2021-04-06 14:09
C51单片机 截取数组buf中一串字符 从X位到Y位 赋值给变量uchar a
最佳答案
我有一点建议,能使用库函数的,尽量使用库函数。
keil c51中的中,有一系列的关于内存拷贝方面的函数:
extern void *memcpy (void *s1, void *s2, int n);
extern void *memmove (void *s1, void *s2, int n); //s1:dest s2:src n:len
例如使用其中的memmove来实现你要的功能。假设你的x,y是基0的(也就是说0表示第1个字符),则
#include "string.h"
typedef unsigned char=uchar;
uchar buf[30];
uchar a[30];
memmove(a,buf+x,y-x+1);
说明一下,memcpy和memmove的区别就是:memmove能更好地完成两个内存区域有重叠的情况!
全部回答
uchar a无论如何也装不下“45678”这几个字符的,如果再声明一个数组,把截取的字符依次放入数组倒是可以的。
由于不知道,你所说的xy的范围是0到7,还是1到8,我下面的程序是按0到7算的,x是低位,y是高位,返回的字节中,x对应的位在最低位。
uchar inbuf(uchar buf,uchar x,uchar y)
{
buf<<=(7-y);
buf>>=(7-y+x);
return buf;
}
供参考。追问uchar buf[16] ,buf里面是从串口接收过来的字符:$$12345678909876,例如想获取第6-第10位共计5个字符 最后a=45678追答是数组,不是字节啊,那试试以下的看。
uchar j=0;
for(i=(x-1);i
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯