* David Haller
Am Mon, 02 Aug 2004, Bernhard Walle schrieb:
* Michael Wenger
[2004-08-02 02:40]: ich würde das so machen:
char buf[sizeof(long)];
sprintf(buf, "%l", lo);
Das ist wohl die eleganteste Lösung für Jans Gesamtproblem.
Damit wird aber an buf[ sizeof(long) ] (also außerhalb des gültigen Speichers) eine 0 geschrieben. Richtig wäre also
char buf[sizeof(long)+1]; sprintf(buf, "%l", lo);
Nein.
==== #include
#include int main(void) { char buf[1024]; long lo = LONG_MAX; sprintf(buf, "%li", lo); printf("%s, %i, %i\n", buf, strlen(buf), sizeof(long)); return 0; } ==== $ ./a.out 2147483647, 10, 4
Merkt ihr was?
Natürlich. Kommt davon, wenn man im Fehler einen Fehler sieht und den eigentlichen Fehler dann übersieht ;) Gruß, Bernhard -- _________ http://www.bwalle.de _________________________________________________ Eine Investition in Wissen bringt noch immer die besten Zinsen. -- Benjamin Franklin