2

リング/循環バッファを使用して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

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 に答える