Il problema sarebbe forse che col secondo codice non ti consente la reimmissione della stringa ad ogni chiamata ricorsiva di main? Col gcc riesco a farlo tranquillamente...