Dubbio su printf !

di il
5 risposte

Dubbio su printf !

Ciao! Sto preparando un esame e nelle dispense del mio professore ho trovato questo codice:

#include <stdio.h>
int main() {
	printf("%l$s %l$s %s %s\n","hello","world");
	return 0;
}
Dovrebbe stampare: hello hello hello world

Premetto che ho studiato la funzione printf e cercato ampiamente su internet ma non riesco a trovare il significato dei simboli "l$"...
Che funzione ha e perché permette di stampare 3 volte il secondo argomento della funzione? Sempre che l'output sia giusto...

5 Risposte

  • Re: Dubbio su printf !

    Ciao, ma hai provato a lanciare il codice?
  • Re: Dubbio su printf !

    Https://wandbox.org/permlink/Tpg35x6QzttbbfJ
    Come vedi non funziona.

    Questo perché "%1$" (non "%l$"), o in generale "%x$" dove x è il numero dell’argomento, è una estensione in sistemi UNIX e non fa parte dello standard C
  • Re: Dubbio su printf !

    Ti ringrazio!!! Quindi in un sistema Unix-like (se ho capito bene è questa la differenza) come funziona la printf ? In particolare come lavora per stampare 3 volte la parola "hello" ?

    _Achille ha scritto:


    Https://wandbox.org/permlink/Tpg35x6QzttbbfJ
    Come vedi non funziona.

    Questo perché "%1$" (non "%l$"), o in generale "%x$" dove x è il numero dell’argomento, è una estensione in sistemi UNIX e non fa parte dello standard C
  • Re: Dubbio su printf !

    mrzyasha ha scritto:


    Ti ringrazio!!! Quindi in un sistema Unix-like (se ho capito bene è questa la differenza) come funziona la printf ? In particolare come lavora per stampare 3 volte la parola "hello"?
    Semplicemente "1$s" lo scomponi come "1$", che è il numero dell’argomento e "s" ossia di tipo char *. Così puoi utilizzare lo stesso argomento senza “consumarlo” come farebbe "%s".

    Ma ciò non porta ad alcun altro cambiamento per la printf che comunque lo standard C deve seguire.
  • Re: Dubbio su printf !

    Ho capito perfettamente! Grazie

    _Achille ha scritto:


    mrzyasha ha scritto:


    Ti ringrazio!!! Quindi in un sistema Unix-like (se ho capito bene è questa la differenza) come funziona la printf ? In particolare come lavora per stampare 3 volte la parola "hello"?
    Semplicemente "1$s" lo scomponi come "1$", che è il numero dell’argomento e "s" ossia di tipo char *. Così puoi utilizzare lo stesso argomento senza “consumarlo” come farebbe "%s".

    Ma ciò non porta ad alcun altro cambiamento per la printf che comunque lo standard C deve seguire.
Devi accedere o registrarti per scrivere nel forum
5 risposte