当前位置: 代码迷 >> 单片机 >> 請教STM32程序對比字符串函數為什麼會被跳過,该如何解决
  详细解决方案

請教STM32程序對比字符串函數為什麼會被跳過,该如何解决

热度:177   发布时间:2016-04-28 14:46:07.0
請教STM32程序對比字符串函數為什麼會被跳過
都是庫函數寫的,變量都有定義,只是沒有貼出來,編譯通過,且可以正確輸出串口字符,但是比較字符部分只有調試的時候
會運行到,下載STM32自動運行就沒有比較字符的輸出,很不解,求助
int main(void)
{
   int i=0;
  SysTick_Init();
  RCC_Configuration();
  NVIC_Configuration();
  GPIO_Configuration();
  USART1_Config();
  printf(“\r\n please input character from keyboard \r\n”)
  for (i=0;i<=strlen(USART_RX_BUF);i++)
    {
       USART_RX_BUF[i]='\0';
    }
    while(1)
     {
         if(m>=22)
          printf(“%s”,"\r\n 輸出字符 \r\n”)
          printf(“%d”,strlen(USART_RX_BUF));
          printf("\r\n”)
          for(i=0;i<=strlen(USART_RX_BUF);i++)
            {
               printf(“%c”,"USART_RX_BUF[i]”);
            }
       strcpy(string0,"0123456789ABCDFE");
        printf(“%d”,strlen(string0));
        printf(“%s”,"\r\n 對比字符 \r\n”)       
        if(strcmp(string0,USART_RX_BUF)>0)
         {
               printf("\r\n YES \r\n")
          }
        for (i=0;i<=strlen(USART_RX_BUF);i++)
         {
             USART_RX_BUF[i]='\0';
         }
      m=0;
     printf("%s","\r\n 比較完成 \r\n")
      }
}
------解决思路----------------------
数组作为字符串进行操作, strlen, strcpy, strcmp,一定要注意结束符.
------解决思路----------------------
strlen(USART_RX_BUF)
strlen是从buffer第一个元素开始,碰到\0结束,计算出字符串长度,如果你buffer第一个字节就是\0那么strlen的值就是0。你应该要使用buffer的size来初始化该缓冲区。