Verstehe Funktion mit sprintf nicht.
-
Danke soweit.
Habe noch eine Frage zu:
sprintf( exist, "%d", retval );
verstehe das so:
exist ist der array in dem die semikolons abgelegt sind,
"%d" ist der integer-Wert(von retval) der in eine Zeichenkette umgewandelt werden soll
retval ist die Variable die z.B den Wert drei für drei Semikolons enthält?Ist das richtig?
-
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);