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.