Mailinglist Archive: opensuse-programming-de (113 mails)

< Previous Next >
Re: long to char
  • From: Bernhard Walle <Bernhard.Walle@xxxxxx>
  • Date: Mon, 2 Aug 2004 18:26:31 +0200
  • Message-id: <20040802162631.GA3142@xxxxxxxxxxxxxxx>
* David Haller <lists@xxxxxxxxxx> [2004-08-02 18:17]:
> Am Mon, 02 Aug 2004, Bernhard Walle schrieb:
> >* Michael Wenger <onlymails@xxxxxxx> [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 <stdio.h>
> #include <limits.h>
> 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

< Previous Next >
List Navigation
Follow Ups