ajfan 发表于 2013-2-22 13:19:39

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

本帖最后由 ajfan 于 2013-2-22 13:30 编辑

前段时间请教过大家关于字符串分隔的问题,目前用strtok函数可以正常操作,并能在1602上能正确显示,串口送出的p字符也是正常的“AD”,但发现程序无论如何都不能进入到
p=="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采集子程序,无论如何也进不了
}

Alimy 发表于 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");// 会输出hello World!

*/

biansf2001 发表于 2013-2-22 14:00:25

用strcmp(p<1>,"AD")

barryliu 发表于 2013-2-27 01:20:50

在C语言里,字符串只是个逻辑概念,对字符串的所有操作都需要通过函数。
页: [1]
查看完整版本: 求高手分析,p[1]=="AD" 不能正常执行