求高手分析,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 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!
*/ 用strcmp(p<1>,"AD") 在C语言里,字符串只是个逻辑概念,对字符串的所有操作都需要通过函数。
页:
[1]