搜索
bottom↓
回复: 3

求高手分析,p[1]=="AD" 不能正常执行

[复制链接]

出340入0汤圆

发表于 2013-2-22 13:19:39 | 显示全部楼层 |阅读模式
本帖最后由 ajfan 于 2013-2-22 13:30 编辑

前段时间请教过大家关于字符串分隔的问题,目前用strtok函数可以正常操作,并能在1602上能正确显示,串口送出的p[1]字符也是正常的“AD”,但发现程序无论如何都不能进入到
p[1]=="AD"   的判断结果去运行ADC采集子程序(子程序已经单独验证过是OK的)
请各位大侠再帮忙看下到底是啥问题,独自一人初学单片机伤不起啊。

晕,指针p  方括号 i 方括号    直接被论坛程序秒杀了,所以这里用<>代替


UART0_Buffer存储从串口中断传输过来的字符串“1,AD,2”

//以下功能将字符串用‘,’分离并存储在指针p<i>中
buff=UART0_Buffer;
i=0;
while((p<i>=strtok(buff,","))!=NULL)
{
   i++;
  buff=NULL;
}
//以上功能将字符串用‘,’分离并存储在指针p

LCD_write_str(0,0,p<0>);   //lcd 0位置显示字符“1”,LCD显示正确
LCD_write_str(3,0,p<1>);   //lcd 3位置显示字符“AD”,LCD显示正确
LCD_write_str(6,0,p<2>);   //lcd 6位置显示字符“2” ,LCD显示正确
Uart0SendString(p<1>);     //电脑端串口助手能接收到“AD”字符  

if(p<1>=="AD")     
{
     // ADC采集子程序,无论如何也进不了
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-2-22 13:19:40 | 显示全部楼层
本帖最后由 Alimy 于 2013-2-22 14:02 编辑

字符串的匹配比较要一个一个字符比。。不能用地址去比。。
同一个内容的字符串可能在内存不同的地址内存在。。
p<1>=="AD"  是不行的。。。 "AD" 的实质是地址。。它存在的地址在哪里了。


if((p<1><0>=='A')&&(p<1><1>=='D')&&(p<1><2>==0)){

// process_adc();
}


/*

printf(&"S hello World!\n"[2]);  // 会输出  hello World!

*/

出0入0汤圆

发表于 2013-2-22 14:00:25 | 显示全部楼层
用strcmp(p<1>,"AD")

出0入0汤圆

发表于 2013-2-27 01:20:50 | 显示全部楼层
在C语言里,字符串只是个逻辑概念,对字符串的所有操作都需要通过函数。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 18:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表