Sapreste dirmi perchè questo programma va bene per le prime due parole dalla fine, ovvero anna e ciro e poi mi sballa il valore di k, fermandosi nella posizione 8 dove non è presente alcuno spazio all'interno del vettore? Il codice seguente gira ed ho anche inserito dei cout per visualizzare i valori alla ricerca dell'errore.

codice:
/*
Note              : 1.	Dati 2 array A e B di caratteri di lunghezza N. L'array A contiene dei 
                       nomi separati da uno spazio, l'array B è vuoto. 
                       Scrivere una procedura che scriva nell'array B, separati da uno
                       spazio, gli stessi nomi presenti in A ma in ordine inverso.
                       
                       Ex 1 Compito 20 11 07

*/     

#include <cstdlib>
#include <iostream>

using namespace std;


int main(){
    
    
    int k=19,n=0,i=20;
    char v[20]={'d','a','r','i','o',' ','a','l','d','o',' ','c','i','r','o',' ','a','n','n','a'};
    char v1[20];
    
    for(int c=0;c<20;c++) cout<<v[c]<<" ";
    cout<<endl;
    
    while(i>=0){
                
                
                cout<<"K di Partenza: "<<k<<" v[k]: "<<v[k]<<endl;
                while(v[k]!=' ' && k>=0) k--;
                
                cout<<"K: "<<k<<endl;
                system("pause");
                
                for(int z=k+1;z<i;z++){
                        v1[n]=v[z];
                        cout<<v1[n]<<" ";
                        n++;
                        }
                if(k>=0) v[n]=v[k];
                cout<<endl;
                system("pause");
                i=k;
                k--;
                }
                        
    for(int c=0;c<20;c++) cout<<v1[c]<<" ";
    cout<<endl;
    
    
    system("pause");
    return 0;
    
}

Grazie a tutti.