讨论strncmp
if(strncmp(buffer,"thisisTI",8)==0){
SciaRegs.SCIFFTX.bit.TXINTCLR = 1;
}这句判断,总是进不去,可以看到buffer0~7中存有的数据为‘t’,‘h’,‘i’,‘s’,‘i’,‘s’,‘T’,'I',可是strncmp的判断确小于零,这个问题大家有遇到过吗? 唉,坐等交流 唉,怎么只有人看,没人留脚印呢 难道没人用过这个东西吗 本帖最后由 sunliezhi 于 2012-11-29 10:15 编辑
看你如何定义的buffer;
还有,字符串中有\0结尾。 我的buffer是char型的,而且我比较的是前8位,不会涉及到/0这个东西吧,我把这句strncmp(buffer,"thisisTI",8)改为strncmp(buffer,"thisisTI",3)还是不能比较的 我在x86上试了,没问题的:
sunliezhi 发表于 2012-11-30 00:14 static/image/common/back.gif
我在x86上试了,没问题的:
先感谢一下您帮我试了一下
不过我的DSP2812串口接收的时候用的FIFO,然后不能匹配唉,就是我前面放的代码 大家2812上没用过这个函数吗 真的再没人回答了吗 strncmp之前将buffer打印出来看看内容,这个很关键
或者用strstr
if(strstr(buffer, "thisisTI"))
{
} 先将buffer的内容打印出来看看 himm007 发表于 2012-12-6 10:07 static/image/common/back.gif
先将buffer的内容打印出来看看
打印了,一模一样,就是比较不出正确结果来,我还是了单独试了一下没用串口,就直接比较也是不对 ddaiss 发表于 2012-12-6 21:44 static/image/common/back.gif
打印了,一模一样,就是比较不出正确结果来,我还是了单独试了一下没用串口,就直接比较也是不对 ...
写一段测试代码, 验证下是不是strncmp函数有问题,有可能是单片机的string库没有完整实现strncmp
{
char stra[]="stringa";
char strb[]="stringb";
printf("%s\n", strncmp(stra, strb, 6) == 0 ? "==" : "!=");
}
楼主strcmp是不是同个文件上的,如果不是,请在调用函数前增加函数声明,或者增加头文件. 是不是给编译器优化掉了 jim166783 发表于 2012-12-6 09:02 static/image/common/back.gif
strncmp之前将buffer打印出来看看内容,这个很关键
或者用strstr
strstr这个函数好像不太完整呀 himm007 发表于 2012-12-7 11:21 static/image/common/back.gif
写一段测试代码, 验证下是不是strncmp函数有问题,有可能是单片机的string库没有完整实现strncmp
{
...
恩,明天试试看 zhonggp 发表于 2012-12-7 12:56 static/image/common/back.gif
楼主strcmp是不是同个文件上的,如果不是,请在调用函数前增加函数声明,或者增加头文件. ...
头文件是加了,但是你说的函数声明是啥意思 xi_liang 发表于 2012-12-7 13:56 static/image/common/back.gif
是不是给编译器优化掉了
请详细说说 ddaiss 发表于 2012-12-7 18:36 static/image/common/back.gif
请详细说说
你单步调试,看能不能跑到这里函数里面,不能的话就证明可能给编译器优化掉了 xi_liang 发表于 2012-12-7 19:33 static/image/common/back.gif
你单步调试,看能不能跑到这里函数里面,不能的话就证明可能给编译器优化掉了 ...
不能进函数,因为比较值不为零呀 xi_liang 发表于 2012-12-7 19:33 static/image/common/back.gif
你单步调试,看能不能跑到这里函数里面,不能的话就证明可能给编译器优化掉了 ...
如果被编译器优化掉了,该如何解决呢
以keil为例,把优化等级降低,改为level0或者default xi_liang 发表于 2012-12-8 13:58 static/image/common/back.gif
以keil为例,把优化等级降低,改为level0或者default
俺是新手呀,CCS3.3里莫有找到{:cry:}
页:
[1]