"il punto è che cosi facendo mi ritrovo nelle ultime posizioni sempre lo stesso nome, esiste una funzione che invece che copiare mi sposti, oppure come faccio a ottimizzare questa cancellando gli indici"
facendo così mi ritorvo esempio

codice:
marco
massimo
antonio
luca 
gianni

ora cancello marco e ottengo
massimo
antonio
luca 
gianni
gianni

ora cancello luca
massimo
antonio
gianni
gianni
gianni
dovrei diminuire l'indice i a ogni cancellazione , non c'è un modo più elegante per non avere doppioni?


"inoltre potrei fare tutto questo con un vettore bidimensionale, in tal caso il vettore sarebbe
char persone[50][30]; ????"

tradotto in modo comprensibile:
prima ho definito una struct contenente il nome di una persona e poi ho definito un numero di 50 persone con un array.

posso fare lo stesso senza struct ovvero con un array bidimensionale?
in tal caso la definizione sarebbe

char persone[50][30]
???

Grazie