Umwandlung von integer zu string, die in C ohne sprintf
Es ist möglich, konvertieren integer zu string in C ohne sprintf
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist möglich, konvertieren integer zu string in C ohne sprintf
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie itoa, wo verfügbar. Wenn es nicht verfügbar ist auf Ihrer Plattform, die folgende Implementierung von Interesse sein können:
https://web.archive.org/web/20130722203238/https://www.student.cs.uwaterloo.ca/~cs350/common/os161-src-html/atoi_8c-source.html
Verwendung:
UPDATE
Basiert auf der R..'s Kommentare, kann es sich lohnen, eine bestehende zu ändern itoa Umsetzung, das Ergebnis zu akzeptieren Puffer vom Aufrufer, anstatt itoa zuordnen und zurückgeben Puffer.
Solchen Implementierung sollte akzeptieren sowohl einen Puffer und die Länge des Puffers, kümmert sich nicht zu schreiben über das Ende der Aufrufer bereitgestellten Puffer.
itoa
ist nicht nur ein nicht-standard, verwendet aber einen statischen Puffer, rendering-code, der verwendet es nicht nur nicht-thread-sichere, sondern unterliegen mit der Folge verändern anderswo, wenn Sie nicht sofort kopieren Sie das Ergebnis. Doing dieses Recht ist fast ein one-liner, so schlimm Lösungen wie dieser, sollten nie verwendet werden.itoa
ist nicht, daß es nonstandard (als Sie uns zeigte, ein drop-in replacement ist trivial zu geben); das problem ist, dass es eine schlechte api-design, weil es gibt statischen Speicher.atoi
, nichtitoa
.Gibt es eine Nichtstandard-Funktion:
Edit: es scheint, Sie wollen einige, Algorithmus, dies zu tun. Hier ist, wie in base-10:
anInteger = -anInteger;
fehlschlagen für INT_MININT_MIN
kann nicht definiert werden, einfach als eine dezimal-string. Es muss eine nicht-triviale Ausdruck von irgendeiner Art.INT_MIN
erfordertlimits.h
.Hier ist ein Beispiel, wie es funktionieren könnte. Gegeben ist ein Puffer und eine Größe, halten wir dividieren durch 10 und füllen Sie den Puffer mit Ziffern. Kommen wir zurück
-1
wenn es nicht genug Platz im Puffer.Leider keiner der oben genannten Antworten kann, wirklich Arbeit in eine saubere Art und Weise in einer situation, wo Sie brauchen, um zusammenbrauen eine Zeichenfolge aus alphanumerischen Zeichen sein.Es gibt wirklich seltsame Fälle, die ich gesehen habe, vor allem in den interviews und bei der Arbeit.
Die einzige schlechte Teil des Codes ist, dass Sie brauchen, um zu wissen, die Grenzen des integer, so dass Sie zuordnen können "string" richtig.
Trotz C wird gefeiert vorhersehbar, es kann zu seltsamen Verhalten in einem großen system, wenn Sie verloren gehen in der Codierung.
Die Lösung unten gibt einen string zurück, der dem integer Darstellung mit einem null-Endzeichen. Diese stützt sich nicht auf irgendwelche äußeren Funktionen und arbeitet auf negative Ganzzahlen als auch!!
string[1] = 0;
benötigt wirdnumber = 0 - number;
stattnumber = -number;
?