was macht das?



  • char*m="char*m=%c%s%c;main(){printf(m,34,m,34);}";main(){printf(m,34,m,34);}
    

    dass 34 für das anführungszeighen steht hab ich rausgefunden, ich kapier aber die funktionsweise von obigem nicht



  • Gibt den eigenen Sourcecode aus.



  • ohne bös sein zu wollen, das weiß ich ^^

    aber die frage ist eher warum??? und wie? und sowieso



  • Warum? Warum nicht?
    Und wie? Geh den Code doch Schritt für Schritt durch, er steht doch da.



  • es tut mir wirklich leid.
    Aber man kann doch erwarten dass ich Code, den ich hier einstelle nicht ganz verstehe und deshalb eine Erklärung suche.

    Ich kanns mir halb erklären aber nicht vollständig.

    Mich wundert dass der Code im String anscheinend ausgeführt wird...

    char* m = %c %s %c ..."
    

    in Verbindung mit

    printf(34, m, 34)
    

    sollte für "string"
    gut sein, aber wieso wird etwas in dem String interpretiert?
    was macht das erste m?

    Auf deutsch:
    ich verstehe den Code nicht und wünsche ihn mir erläutert.

    Und wie gesagt janjan, das ganze soll nicht aggresiv gemeint sein wenn ich sag dass ich schon weiß was das programm auf der konsole ausgibt.

    Vielleicht ist jetzt die Fragestellung klarer ...



  • Der Code im String wird nicht ausgeführt.
    Es wird lediglich ein printf-Aufruf getätigt (der in main() - logisch, oder?) und die drei zusätzlichen Parameter ersetzen nun jeweils %c, %s und %c im String.

    Vielleicht sieht's mit anständiger Formatierung weniger mysteriös aus:

    char* m="char*m=%c%s%c;main(){printf(m,34,m,34);}";
    main()
    {
      printf(m,34,m,34);
    }
    

Anmelden zum Antworten