【问题标题】:Memcpy is not working in C Low level programMemcpy 在 C 低级程序中不起作用
【发布时间】:2014-08-01 22:30:51
【问题描述】:

我被这个程序函数卡住了,我不知道为什么这个 memcpy 函数不能将字符复制到 local_buf。我在 Visual Studio 中尝试过它工作正常,但是当我在基于 c 的微控制器 SDK 中使用它时,它不起作用,或者如果工作,则复制一些垃圾值。

我找不到任何错误,很多人都在做同样的事情,有没有其他更好的方法来做这件事或在低级程序中提出一些建议而不是 memcpy

static void Transmit_Async(void)
{    
     char local_buff[10];
      int i;


 for(i=0;i<10;i++)
     {

    if(buffer[i]=='\r')
        {
        memcpy(local_buff,buffer,i);
        memset(buffer,0,sizeof(buffer));
         }
       }

        if(local_buff=='N')
        {
          Text_Write("N12345678\r");
           memset(local_buff,0,sizeof(local_buff));
           }

        if(local_buff=='C')
        {
          Text_Write("\r");
            memset(local_buff,0,sizeof(local_buff));
           }

         if(local_buff=='V')
        {
          Text_Write("9865");
          memset(local_buff,0,sizeof(local_buff));
          }

        LED0 = LED_ON; 
        LED1 = LED_OFF; 

}

【问题讨论】:

  • local_buff=='...' 似乎很可疑。
  • 我们可以看看你对buffer的定义吗?

标签: c serial-port microcontroller


【解决方案1】:

假设您的意思是您的 if(local_buff=='...') 语句似乎不起作用,那么问题是这些比较永远不会起作用。 local_buffchar 的数组,您将它与文字字符(在 C 中实际上具有 int 类型)进行比较。它们属于不同的类型,无论如何你不能指望字符常量与指针值成功比较。

你的意思可能是:

        if(local_buff[0]=='N')

或您希望比较开始的任何适当索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多