Interger => String
-
Vielleicht koennt ihr mir bei meinem problem weiterhelfen !!!
Wie kann ich eine Integer Zahl in einen Text String umwandeln ?Danke im vorraus.
mortal
-
int zahl = -3432; char zahl_as_str [6]; int basis = 10; itoa(zahl,zahl_as_str,basis);
MfG SideWinder
-
Hallo,
na sowas, itoa im ANSI-C-Forum, das ist mindestens so schrecklich wie, laß mich nachdenken...ja, system("PAUSE");, oder
int zahl = -3432; char zahl_as_str [6]; sprintf(zahl_as_str, "%d", zahl); printf(zahl_as_str);
MfG
-
Dachte eigentlich, dass itoa() Standard ist
MfG SideWinder
-
nö ist es meines wissens nicht... ich glaub da hat probenutzer recht... hab damals auch gut gestaunt warum atoi zum standard gehört und itoa nicht... vermutlich wurde damals gewürfelt
-
Wie wäre es denn mit long strtol(char* zahl_string, char** ende, int basis);
ende ist ein zeiger auf einen zeiger, der nach auchruf auf das zeichen in zahl_string zeigt, bei dem aufgehört wurde zu übersetzten (ist also ausgabe parameter)bspl:
char* zahl_str = "1234";
long zahl = strtol(zahl_str, 0, 10);
-
@Probenutzer
Du hast "%s", bei deinem printf vergessen@DennisB
Themaverfehlung - mortal will aus einer Zahl einen String, nicht anders rum.
-
AJ schrieb:
Du hast "%s", bei deinem printf vergessen
aber nein, ich wollte ja nichts formatieren. Gibt es keinen Format-Spezifizierer im ersten Argument von printf, dann gibt printf die Zeichenkette (in diesem Falle zahl_as_str) einfach so aus, und ist zufrieden (alle Parameter nach dem ersten sind bei printf optional)
MfG
-
@Probe-Nutzer
Ich weißIn dem Fall hast du auch kein Problem, aber überleg mal, was ist, wenn in deinem String ein % vorkommt. Besser man gewöhnt sich gleich an immer zu formatieren (auch wenn es wenig Sinn macht) bevor man ewig suchen muss, warum etwas nicht funktioniert und man dann vielleicht irgendwann drauf kommt, dass es an einem einzigen % in einem String liegt.
-
Wenn man nicht formatieren will, dann sollte man auch nicht
"print formatted" nehmen, sondern zB einfach puts()
-
@AJ:
ok, wußte nicht, daß es dir darum geht. Trotzdem besteht hier keine Gefahr, denn es ging um die Überführung von Zahlen in einen char-Buffer.
@Shade Of Mine:
sollte man wohl, ist auch weniger Schreibarbeit :D, aber eigentlich ging es mir nur darum, irgendeine Funktion anzugeben, die zeigt, daß man jetzt einen char* hat, den man z.B. dort einsetzen kann, und da ist mir eben printf als erstes eingefallen...
MfG
-
Probe-Nutzer schrieb:
@AJ:
ok, wußte nicht, daß es dir darum geht. Trotzdem besteht hier keine Gefahr, denn es ging um die Überführung von Zahlen in einen char-Buffer.
MfG
Ja das ist der eigentliche Sinn. Was aber wenn jemand den Buffer manipuliert, wie AJ schon sagte ? Dann hast du ne typische Formatstringschwachstelle.
-
der Sinn ist völlig klar, es ging mir in meinem Beispiel nur um die Angabe irgendeiner Funktion, die mit char* arbeitet (ich hätte gut und gerne auch printf weglassen können, und nur die eigentliche "Wandlungstechnik" in meinem Beispiel zeigen können). Klar ist, wenn ich Daten von irgendwelchen Quellen habe, dann sollte man sich an die Regeln des "secure programming" halten, und dann wird man auch kein printf auf solche (ungeprüften) Daten loslassen.
MfG