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;
}