No, non è a posto per niente.

Prima di tutto non si confrontano due puntatori perché confrontare indirizzi non ha senso.

Semmai si usa la funzione

strcmp

a cui si passano i puntatori delle due stringhe da confrontare e si valuta il risultato della funzione (vedi documentazione).

Inoltre, all'interno della funzione

void carica(char*p,int n)

non usi mai l'argomento p dato che scrivi usando direttamente la variabile magazzino.
Quindi potrebbe essere

void carica(int n)

e a questo punto la funzione ordina potrebbe fare a meno di char *p agendo anch'essa su magazzino.