我正在使用环形/循环缓冲区进行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
答案 0 :(得分:2)
增加Command_String指针:
while (BufferCount--) {
*Command_String = RingBuffer_Remove(&Buffer);
Command_String++;
}
然后使用它,好像它仍然指向开头:
usart_pstr(Command_String);
free (Command_String);
您应该获取它的副本以填充字符串,因此您保留原始值以供将来使用,或者将其编入索引而不进行修改。
答案 1 :(得分:0)
因为你用
递增Command_StringCommand_String++;
当你的循环结束时,Command_String指向它的最后一个字符。