2

我正在使用环形/圆形缓冲区进行 USART。无法将 Buffer 中的字符移动到char* Command_String我定义的位置:

char holder ;
holder = usart_getchar();
RingBuffer_Insert(&Buffer, holder);

if (holder == '\0') {
  uint16_t BufferCount = RingBuffer_GetCount(&Buffer);
  char* Command_String = malloc (BufferCount);
  while (BufferCount--) {
    *Command_String = RingBuffer_Remove(&Buffer);
    Command_String++;                 
  }
  usart_pstr(Command_String);
  free (Command_String);
} 

功能RingBuffer_Insert()RingBuffer_GetCount()工作。但是我尝试将字符移动到Command_String没有。帮助请

4

2 回答 2

2

您增加 Command_String 指针:

while (BufferCount--) {
*Command_String = RingBuffer_Remove(&Buffer);
Command_String++;                 
             }

但是然后使用它,就好像它仍然指向开头一样:

usart_pstr(Command_String);
 free (Command_String);

您应该获取它的副本以填充字符串,以便保留原始值以供将来使用,或者在不修改的情况下对其进行索引。

于 2012-12-18T22:16:28.957 回答
0

由于您正在增加 Command_String 与

Command_String++;

当你的循环结束时,Command_String 指向它的最后一个字符。

于 2012-12-18T22:17:34.073 回答