Удалить пробелы между первым и вторым вопросительным знаком

Задача: 

Во введенной строке удалить пробелы между первым и вторым вопросительным знаком.

Алгоритм решения задачи: 
  1. В переменные q1 и q2 будем записывать номера в строке первого и второго вопросительного знака соответственно. Если этих знаков в строке нет, то эти переменные останутся с первоначально им присвоенным значением 0.
  2. Находим первый вопросительный знак. Для этого перебираем посимвольно строку. Как только очередной символ окажется вопросительным знаком, присваиваем q1 его номер и завершаем цикл.
  3. Находим второй вопросительный знак. Для этого перебираем строку от символа следующего за номером первого вопросительного знака. Как только встретиться вопросительный знак, присваиваем q2 его номер и прерываем цикл.
  4. Если оба знака были найдены (q1 и q2 не равны 0), то выполняются нижеследующие действия. Если же это не так, то программа завершается.
  5. Присвоим q1 номер следующего за ним символа.
  6. Пока q1 меньше q2 будем смотреть, какой символ под номером q1. Если это пробел, то следует его удалить с помощью процедуры delete(). Поскольку при этом длина строки уменьшилась на 1, то следует из q2 вычесть 1, т.к. второй вопросительный знак стал ближе к началу строки на 1 символ.
  7. Если очередной символ не пробел, то следует q1 увеличить на 1, т.е. перейти к следующему символу.
Программа на языке Паскаль: 

var
    str: string;
    q1, q2, l, i: byte;
begin
    readln(str);
    l := length(str);
    q1 := 0;
    q2 := 0;
    for i:=1 to l do 
        if str[i] = '?' then begin
            q1 := i;
            break;
        end;
    for i:=q1+1 to l do
        if str[i] = '?' then begin
            q2 := i;
            break;
        end;
    if (q1 <> 0) and (q2 <> 0) then begin
        q1 := q1 + 1;
        while q1 < q2 do 
            if str[q1] = ' ' then begin
                delete(str,q1,1);
                q2 := q2-1;
            end
            else
                q1 := q1 + 1;
        writeln(str);
    end;
 
end.

Комментарии

правда на си, но короче)

char s[50];
int i,j,k=0;
int main()
{
    fgets(s,50,stdin);
    for (i=0;i<=49;i++)
    {
        if (s[i]=='?') k++;
        if ((s[i]==' ')&&(k==1))
            for (j=i;j<=49;j++)
                s[j]=s[j+1];
    }
    printf("%s",s);
}

...

Сорян, но эта прога не работает. если пробелов идет больше одного подряд...