Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269

    [C] Accentrare lo standard output

    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
    Con i sogni possiamo conoscere il futuro...

  2. #2
    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.

  3. #3
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Quote Originariamente inviata da maluz1 Visualizza il messaggio
    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.
    Con i sogni possiamo conoscere il futuro...

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    codice:
    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).
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    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.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.