Array of Chars as Queue in C
<p>I'm coding a piece of code for AVR. I want to build a queue that can push and pop, and this queue is an array of chars (string). So when I push 'a':<br>
<code>['b', 'c', 'd', 'e', 'f']</code><br>
becomes:<br>
<code>['a','b', 'c', 'd', 'e', 'f']</code><br>
and when I pop, <code>f</code> comes out. I've written this code, but it only pushes 1 char to the queue, as if it removes the whole queue. Here's my code for the queue:<br></p>

<pre><code>char queue[50] = "";
char* queue_tail = &amp;queue[0];
char* queue_head = &amp;queue[0];

void queue_push(char l_item)
{
    if(queue_head != &amp;queue[strlen(queue) - 1]) //if queue is not full, do the job
    {
        //Push all elements one step further
        char* traveler = queue_head;
        for(; traveler != queue_tail; --traveler)
        {
            *(traveler+1) = *traveler;
            *traveler = '';
        }
        ++queue_head;
        *queue_tail = l_item;
    }
}

char queue_pop()
{
    char temp = *queue_head;
    *queue_head = '';
    --queue_head;
    return temp;
}
</code></pre>

<p>This is my main function:<br></p>

<pre><code>#include &lt;mega32.h&gt;
#include &lt;alcd.h&gt;
#include &lt;delay.h&gt;
#include &lt;string.h&gt;

void main(void)
{

const char text[] = "Hello world!";
int col_counter = 0;
char* p_head = '';

lcd_init(32);
p_head = &amp;text[12];

while(1)
{
    lcd_clear();

    if(col_counter + strlen(text) &gt; 32)
    {
        queue_push(*p_head);
        --p_head;
    }

    lcd_gotoxy(col_counter, 0);
    lcd_puts(text);
    lcd_gotoxy(0,0);
    lcd_puts(queue);
    delay_ms(200);
    ++col_counter;

}
}
</code></pre>

<p>Any help would be appreciated. Thanks in advance.</p>