PDA

Visualizza la versione completa : [C] Accentrare lo standard output


gaten
04-02-2014, 15:42
Salve ragazzi , praticamente dovrei fare in modo che tutto lo standard output venga accentrato.
Premetto che utilizzo la libreria "windows.h", per intenderci, ogni volta che uso la printf, devo stampare al centro della finestra.
Qualcuno può aiutarmi?

Grazie anticipatamente

maluz1
04-02-2014, 21:48
be la finestra dell'esecuzione è di 80 colonne x 25 righe, quindi ti basta impostare un algoritmo che funziona così:
40 - 1/2 della stringa che devi mandare in output

quindi è come se ti posizionassi a metà della finestra di esecuzione e sottrai la metà della lunghezza della stringa.
inserisci tanti spazi prima dell'output stringa quanti ne restituisce l'algoritmo.

gaten
05-02-2014, 00:18
be la finestra dell'esecuzione è di 80 colonne x 25 righe, quindi ti basta impostare un algoritmo che funziona così:
40 - 1/2 della stringa che devi mandare in output

quindi è come se ti posizionassi a metà della finestra di esecuzione e sottrai la metà della lunghezza della stringa.
inserisci tanti spazi prima dell'output stringa quanti ne restituisce l'algoritmo.

puoi fare un esempio. Grazie.

Scara95
05-02-2014, 07:12
int n_spazi = 40 - strlen(stringa) / 2;
while(n_spazi--) {
printf(" ");
}
printf("%s\n", stringa);

Questo è il modo più banale e non sempre la dimensione del terminale è di 80 caratteri, si possono cambiare le impostazioni (anche se praticamente lo è sempre).

Scara95
05-02-2014, 07:15
Ah, inoltre non funziona per stringhe maggiori di 80 caratteri, anzi, formulato come è ora entrerebbe in un loop infinito, per correggere questo basta fare (n_spazi--)>0 , tuttavia questo non sistema la situazione, blocca solo il loop infinito.

maluz1
05-02-2014, 07:20
Certo, allora:

Char str[15]= "la mia stringa\0";

questo è il vettore di caratteri, cioè la stringa che devi mandare in output.

l'algoritmo sarà il seguente:

40 - strlen( str ) / 2;

Ovviamente devi includere anche la libreria string.h per la strlen.
a una variabile int assegni il risultato di questo algoritmo.

a questo punto imposti un ciclo for da 0 a variabile int di prima, stampando con una printf dei caratteri "invisibili" come lo spazio, per esempio.

Poi procedi con la stampa della stringa. Dovrebbe funzionare:)

se tu vuoi invece proprio al centro dello schermo ti basta mandare a capo di 12 righe e scriverai circa a meta.
Poi potresti usare la funzione system con parametro "cls" per cancellare lo schermo( anche se non è molto efficiente come metodo peró funziona. Per altre funzioni interessanti ti consiglio di guardare la libreria conio.h

Loading