完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
11个回答
|
|
用c库函数strcmp一个字符一个字符的比较不就行了.
|
|
|
|
USMART 程序是你需要的
|
|
|
|
下面是我在51单片机部分代码,完全没问题!
if(strcmp(pComDbg.Revdata,"helprn") == NULL) { DPRINTF((".Dbgrn")); return FALSE; } if(strcmp(pComDbg.Revdata,".dbgrn") == NULL) { DPRINTF(("DbgMsgrn")); DPRINTF(("LogoName <"str16">rn")); DPRINTF(("ComDbg DPRINTF(("Exitrn")); return TRUE; } if(strcmp(pComDbg.Revdata,"dbgmsgrn") == NULL) { DPRINTF(("LogoName:%srn",pComDbg.Str)); DPRINTF(("InPut 0X3A => h3a or H3arn")); return TRUE; } |
|
|
|
注意字符串末端的字符,建议自己写,指针判断就可以了
|
|
|
|
请问这样写有什么问题吗?我下载到板子试了下,不行啊?!
#include #include #define uchar unsigned char #define uint unsigned int uchar i,temp; char* str1="abc"; char* str2=" "; void main() { TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; while(1) { } } void zdfw() interrupt 4 { if(RI) { RI=0; temp=SBUF; if(temp!= "rn") { *str2=temp; } i=strcmp(str1,str2); if(i==0) { P0=0x00; } } } |
|
|
|
|
|
|
|
if(temp!= "rn")一个字符跟字符串比较是错误的。
思路就是要将串口先接收到串口接收缓存里,在判断接收到'r'或'n'字符时,再进行执行比较,并清除缓存计数,防止计数值没有清零导致接收溢出接收缓存,导致程序崩溃 |
|
|
|
感谢解答
|
|
|
|
感谢解答,懂了
|
|
|
|
数组和字符串是不一样的,数组不能用strcmp的,记得字符串最后是有个' |