使用malloc处理char的新手

时间:2012-12-18 22:13:17

标签: c microcontroller

我正在使用环形/循环缓冲区进行USART。无法将缓冲区中的字符移动到我定义的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的尝试却没有。帮助PLZ

2 个答案:

答案 0 :(得分:2)

增加Command_String指针:

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

然后使用它,好像它仍然指向开头:

usart_pstr(Command_String);
 free (Command_String);

您应该获取它的副本以填充字符串,因此您保留原始值以供将来使用,或者将其编入索引而不进行修改。

答案 1 :(得分:0)

因为你用

递增Command_String
Command_String++;

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