Umwandlung mit atol schlägt fehl.
-
Hallöle.
Ich verzweifle an einem Problem (chen).
Ich möchte einen C-string in einen int long wandeln.
das Ganze sieht so aus:long int test; char * bla = new char[11]; strcpy(bla,"3128688791"); test = atol(bla);
Der Wert der in bla kopiert wird, ist hypotetisch.
Das Ergebnis das in Test drinsteht ist IMMER 2147483647 !
Habe ich eine neunstellige Zahl dann funktionierts, aber mit einer zehnstelligen nicht.Woran kann das liegen? Es ist doch ein Long?
Vielen Dank schonmal, Mondmann
-
Falsches Forum: Besser wäre C oder C++.
Hier die entsprechende FAQ Seite: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39488.htmlSimon
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
atol gibt ein lon int zurück kein normales
-
C++ Forumbot schrieb:
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum ANSI C verschoben.
jochen, du hast doch null plan, 'new' gibts nicht in C.
MondMann: 2147483647 ist LONG_MAX, dein wert ist wohl zu gross. und dass array mach auch länger und leg es nicht mit new/malloc oder sowas an, sondern direkt.
und probier mal 'strtoull()' oder sowas.
-
[quote=";fricky"]
C++ Forumbot schrieb:
MondMann: 2147483647 ist LONG_MAX
Stimmt!Hier http://www.datasource.de/programmierung/tab33_cppdatentypen.html stehts ja.
Allerdings habe ich es auch schon mit unsigned long versucht, da ist der Wert ja nicht zu groß!
Hat aber auch nicht funktioniert...
Danke fürs Augenöffnen.
-
Mondmann schrieb:
Allerdings habe ich es auch schon mit unsigned long versucht, da ist der Wert ja nicht zu groß!
Sicher? Bei mir ist sizeof(int) = sizeof(long int) = 4 und ich muss long long int für 64 Bit benutzen.