Verstehe Funktion mit sprintf nicht.



  • danzriba schrieb:

    Ist das richtig?

    Ja.

    BTW: dass die Funktion so ein Mist ist, dass du dir daran kein Beispiel nehmen solltest, ist dir klar?



  • µngbd schrieb:

    danzriba schrieb:

    Ist das richtig?

    Ja.

    Doch nicht.
    exist ist ein char-Array, das der Aufrufer übergeben muss, damit sprintf() darin den String formatieren kann
    "%d" ist der Formatstring, der sprintf() sagt, dass es in das char-Array etwas schreiben soll, das wie eine ganze Zahl aussieht
    retval ist die Variable, in der du die ';' gezählt hast.



  • sprintf ist dasselbe wie printf, nur dass es nicht auf dem Bildschirm ausgegeben wird, sondern in einen String den du als ersten Parameter übergibst.
    exist ist der zu schreibende String, "%d" ist der konstante String der in exist reingeschrieben werden soll, retval ist ein int was sprintf an die Stelle von %d schreibt.



  • nwp2 schrieb:

    ..."%d" ist der konstante String der in exist reingeschrieben werden soll, retval ist ein int was sprintf an die Stelle von %d schreibt.

    naja, das klingt irgendwie nicht richtig, ich versuch's auch mal: "%d" ist ein formatstring, der 'sprintf' sagt, was es mit den folgenden argumenten machen soll. in diesem fall (%d) soll 'sprintf' aus einem int (retval) einen string aus ziffern machen (z.b. den string "0" wenn kein semikolon gefunden wurde). dieser string wird dorthin geschrieben, worauf 'exist' zeigt.
    🙂



  • Wie sieht der string bei 3 Semikolons aus: 3 oder 111?



  • danzriba schrieb:

    Wie sieht der string bei 3 Semikolons aus: 3 oder 111?

    "%d" ist für dezimalzahlen, jetzt rate mal? wer ist für drei und wer tippt auf hundertelf? *fg*
    🙂



  • Danke 🙂
    Hatte einen Denkfehler, dachte pro Semikolon gibt er eine 1 zurück.



  • Uhh, danke Big Brother hab ich ganz vergessen gehabt. Eine String Literale nimmt ebenso speicher ein....danke nochmals!

    :xmas1:



  • Keine Ursache, Bruder!



  • Hallo,

    im Gegensatz zu Java oder VC++ verstehe ich die Stringformatierungen.

    In VC++ meinetwegen wenn ich einen String habe und diesen formatieren will, sprich auch was anhängen will, geht das so:

    String str,str1; 
    str1 = "HalloXY";
    str = str1 + String.Format("%d.%d",getPointX(),getPointY());
    

    Eine einfache Konkatination.

    Wenn ich in C das schreibe, dachte ich sprintf schreibt in einen String zusätzlich einen Wert, anstatt ihn zu überschreiben.

    Schreib ich beispielsweise:

    sprintf(stringX,"%d",iX);
    

    wird hier nicht in den String zusätzlich hineingeschrieben, also bei der Ausgabe

    stringX 1
    stringX 2
    ...
    ...

    Gibt es nicht auch eine Methode anders zu konkatinieren?
    Ich habe das versucht mit der einfachen stringX = stringX + sprintf(...),
    jedoch eine Warnung/Fehler, warum?

    error: incompatible types in assignment

    Danke



  • kpl. ob das geht probiers doch mal und sag uns bescheid;)

    sprintf(stringX,"%s%d",stringX,iX);
    

Anmelden zum Antworten