Vabbè storicamente non è che io sia proprio proprio la persona più adatta per questo genere di spiegazioni, comunque
Come saprai (forse) il concetto (tipo) di "stringa" non esiste in C (e neppure in C++); una sequenza di caratteri (detto anche vettore o array) è considerata una stringa.
Esistono tipicamente due modi (che poi in realtà sono il medesimo, ma non complichiamo la vita che qui è già confusa) per definirle: mediate un vettore di caratteri, che quindi avrà una lunghezza prefissata (nel tuo caso 25), oppure mediante un mitico puntatore (che lasciamo stare).
Esiste la "terza strada", ovvero utilizzare librerie (tipicamente C++) che mettano a disposizione "magicamente" un tipo "stringa".
Tale per cui potrai dire stringapippo="qualcosa"
stringapluto="chipuòdirlo" e fare tante belle cose tipo if (stringapippo>stringapluto) ...
Queste funzioni di libreria, o come le vuoi chiamare, si appoggiano però a funzioni scritte che, alla fin fine, manipolano caratteri e vettori di carattere.
Le quali, a loro volta, esistono tipicamente in due versioni: per lavorare su vettori (quindi con una lunghezza massima predefinita), o per lavorare su puntatori (ovvero stringhe di lunghezza ignota, ma terminate da un byte a zero, cosa molto comune in C\C++)
Tornando al tuo problema esso diventa banale (se usi librerie C++), molto facile (se usi librerie C), non così banale (se non usi nulla).
Riflettendo su quello che ti serve vedrai che, in essenza, sono poche funzioni
1) copia una stringa (o meglio un vettore di caratteri) su un'altra
2) confronta due stringhe (vettori di caratteri) per stabilire se la prima è > della seconda secondo un qualche ordinamento (tipicamente lessicografico)
La 2) ad esempio la trovi definita in string.h,
codice:
int strncmp ( const char * str1, const char * str2, size_t num );
che confronta due vettori di caratteri, fino alla dimensione massima num (è la n dentro strncmp)
La 1, sempre in string.h, è
codice:
char * strncpy ( char * destination, const char * source, size_t num );
** ricordo che siamo sempre nell'ipotesi di fare un programma C, non C++ ***
In superbrutale pseudocodice, strncpy ti consente di copiare (poniamo) 25 caratteri dalla stringa A a temp, e da B ad A, e da temp a B
La strncmp invece fa un [i]str[i]inga massimon compare, quindi si arresta sia per byte a zero che per una lunghezza massima (che è poi la dimensione del vettore che hai predisposto).
Infine ritorna un valore 0, >0 e <0 a seconda del risultato del confronto.