中级会员
 
- 积分
- 393
- 金钱
- 393
- 注册时间
- 2017-4-21
- 在线时间
- 61 小时
|
5金钱
比较部分的代码如下:
int strcmp(const char *s1,const char *s2)
{
//区分大小写
for(;*s1==*s2;++s1,++s2)
{
if(*s1=='\0')
{
return(0);
}
}
return((*(unsigned char*)s1<*(unsigned char*)s2)?-1:+1);
}
需要比较的字符串我是从串口中接收的,代码如下:
void getSerialData(UINT8 sdata)
{
*p = sdata;
++p;
}
void USART1_IRQHandler(void)
{
volatile char res;
if(USART1->SR&(1<<5))
{
res = USART1->DR;
getSerialData(res);
}
}
调用的时候就是声明一个字符数组和一个指针,然后把数组的地址赋给指针。
类似如下的代码写在主函数里面:
char str[100], *p;
p=str;
strcmp(str, "abcdefg");
串口精灵里面写到串口接收的字符设定死了为“abcdefg”
但是有一定机率比较的时候是不同的。
不知道为什么,有没有坛友遇到过这种情况,怎么解决的。
|
|