Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [Pillola]La funzione printf()

    In C, il flusso di output viene regolato dalla funzione printf().Qui di seguito vedremo come funziona

    Prototipo della funzione
    codice:
    int printf(const *stringa_controllo,...);
    Ecco di seguito gli specificatori di printf():

    %c -> carattere
    %d -> interi decimali con segno
    %i -> interi decimali con segno
    %f -> numero decimale in virgola mobile
    %s -> stringa di caratteri
    %u -> interi decimali senza segno
    %p -> visualizza un puntatore
    %% -> stampa il carattere %
    %c ->visualizza un solo carattere

    Esempio:
    codice:
    printf("Mi piacie molto %s il %c", "studiare","C");
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  2. #2

    Re: [Pillola]La funzione printf()

    codice:
    printf("Mi piace molto %s il %c", "studiare","C");
    c'è un errorino. La chiamata dovrebbe essere:
    codice:
    printf("Mi piace molto %s il %c", "studiare",'C');
    con gli apici singoli sui char.

    A parte questa inezia, la printf è davvero una funzione utilissima, non solo in C ma anche in C++, in sostituzione di ostream, grazie alla sua grande flessibilità.

    Allora già che lucasp vi ha descritto la printf aggiungo una considerazione anch'io: la printf prende un numero arbitrario di parametri dopo la stringa di formattazione.

    Il prototipo di printf è
    int printf(char* ftm, ...);

    i tre puntini indicano che può ricevere n parametri a run-time.

    Ad esempio scriviamo una funzioncina che prende come argomento una lista di uno o più interi e li stampa in output finchè nella lista dei parametri non trova -1. Per fare ciò è necessario includere uno header file <stdarg.h> che incorpora varie macro per accedere ai parametri senza nome.

    ATTENZIONE: il compilatore non controlla i tipi dei parametri '...'.
    Può essere più forte come vincolo passare un vero e proprio array, anche se meno flessibile.
    codice:
    #include <stdarg.h>
    #include <stdio.h>
    
    int printint(int first, ...)
    {
    	int i;
    	int count=0;
    	va_list list;
    	va_start(list,first); //inizializzazione
    	i=first;
    	while( i != -1 )
        {
          ++count;
    	  printf("%d\n", i);	
          i = va_arg( list, int); //argomento successivo di tipo int
        }
        va_end( list );    
    	return count;
    }
    
    int main()
    {
    printint(2,4,6,33,67665,1232,-1);
    return 0;
    }

  3. #3
    Grazie per le correzioni e le aggiunte!

    P.S: ma sta idea delle pillole ti sebmra stupida??
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  4. #4
    Al contrario, la reputo un'ottima idea, così uno che incomincia col C/C++ può avere maggiori spunti di riflessione e di studio.

  5. #5
    Originariamente inviato da Andrea Simonassi
    Al contrario, la reputo un'ottima idea, così uno che incomincia col C/C++ può avere maggiori spunti di riflessione e di studio.
    Ne scriveresti una anche tu??????

    P.S: ma la mia sulle classi la hai letta???? cosa ne pensi?
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  6. #6
    "C" penserò, adesso sono in un periodo nero tra studio, lavoro, e incombenze varie (sto ristrutturando la casa).

    Entro settembre sicuramente.

    PS:
    Ora leggo la tua pillola.

  7. #7
    Originariamente inviato da Andrea Simonassi
    "C" penserò, adesso sono in un periodo nero tra studio, lavoro, e incombenze varie (sto ristrutturando la casa).

    Entro settembre sicuramente.

    PS:
    Ora leggo la tua pillola.
    settembre è passato e tu nn hai scritto nulla


    Ora poi?



    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    bellissima l'iniziativa!!!!

    Invito qualcuno più esperto di me a continuare questa pillola
    spiegando le possibilità di formattazione della printf, ad es:

    codice:
    printf("un intero: %3d e un decimale %2.3f",2,1.5)
    ah...poi forse c'è un errore:
    %d -> interi decimali con segno
    %i -> interi decimali senza segno
    giusto?
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  9. #9
    Originariamente inviato da standard
    bellissima l'iniziativa!!!!
    Tnk
    Originariamente inviato da standard
    ah...poi forse c'è un errore:


    giusto?
    giusto
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  10. #10
    Originariamente inviato da Luc@s
    settembre è passato e tu nn hai scritto nulla


    Ora poi?



    Provveduto


    http://forum.html.it/forum/showthrea...hreadid=384344

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 © 2025 vBulletin Solutions, Inc. All rights reserved.