Jemand sagte mir, dass ich atoi()
nicht verwenden sollte, und dass ich stattdessen immer strtol()
verwenden sollte. Was ist los mit atoi()
, dass ich es nicht verwenden sollte? Ist strtol()
wirklich das Richtige, um stattdessen zu verwenden? (Und was ist mit der Tatsache, dass strtol()
gibt ein long
, kein int
wie atoi()
tut?)Warum sollte ich atoi() nicht verwenden?
Antwort
von Ihrem eigenen link:
Die atoi() Funktion von strtol subsumiert(), aber erhalten bleibt, weil Es wird weitgehend in vorhandenem Code verwendet. Wenn bekannt ist, dass die Anzahl nicht im Bereich liegt, sollte strtol() verwendet werden, da atoi() keine Fehlerprüfung durchführen muss.
Oder
atoi
veraltet
Mit dem atoi
gibt es keine Möglichkeit herauszufinden, ob die übergebene Zeichenfolge wirklich eine Zahl ist, da es keine spezielle Fehler „Rückkehr“. Es behandelt auch nur Dezimalwerte (Basis 10) und kann daher keine beliebigen Basen wie z.B. strtol
. Es kann auch nicht mit Werten umgehen, die größer als die ganze Zahl mit Vorzeichen sind (32 Bit auf den meisten Plattformen).
Wenn der String sehr groß ist und nicht konvertiert werden kann, führt dies zu undefiniertem Verhalten, da der Wert dieser Zeichenfolge zu groß sein kann und sich möglicherweise nicht im Bereich befindet. In solchen Fällen (Nummer ist nicht bekannt im Bereich) sollte strtol()
verwendet werden.
- 1. Warum sollte ich nicht Unity verwenden?
- 2. Warum sollte ich UNIVERSAL :: isa nicht verwenden?
- 3. Warum sollte ich AutoDual nicht verwenden?
- 4. Warum sollte ich glBindAttribLocation verwenden?
- 5. Warum sollte ich Microsoft Expression Blend verwenden?
- 6. Warum sollte ich die Elementinitialisierungsliste verwenden?
- 7. Wann/warum sollte ich Groovys @CompileStatic verwenden?
- 8. Warum sollte ich io_service :: work verwenden?
- 9. Warum sollte ich Datetime in SQL verwenden?
- 10. Warum sollte ich divergierende Funktionen verwenden?
- 11. Warum sollte ich Struts lernen und verwenden?
- 12. Warum bekomme ich dieses unerwartete Ergebnis mit atoi() in C?
- 13. Sollte ich FxCop verwenden und warum?
- 14. Warum sollte ich Ruby on Rails verwenden?
- 15. Wann/warum sollte ich eine Datenbank verwenden?
- 16. Warum sollte ich Isolated scope verwenden?
- 17. Bootstrap Customization: Warum sollte ich weniger verwenden?
- 18. Sollte ich noch HTML-Entities verwenden? Warum?
- 19. Warum sollte ich LabelFor in MVC verwenden?
- 20. Warum sollte ich Java-Container verwenden?
- 21. Warum sollte ich PNG und nicht JPG verwenden?
- 22. Warum sollte ich nicht Gleichgestellte mit Vererbung verwenden?
- 23. Warum sollte ich nicht blockierende oder blockierende Sockets verwenden?
- 24. Warum sollte ich nicht sizeof (double) in C-Dateien verwenden
- 25. c atoi() Funktion funktioniert nicht
- 26. Sollte ich Fremdschlüssel verwenden?
- 27. Sollte ich Typklassen verwenden oder nicht?
- 28. Warum sollte ich WndProc verwenden, wenn ich Formularereignisse habe?
- 29. Wann sollte ich RESTful verwenden?
- 30. Warum sollte oder sollte ich nicht camera2 API in Android verwenden?
Hinweis: Ich weiß ganz genau, warum ich 'atoi()' nicht benutzen soll. Während ich jedoch Fragen darüber sehe, wie man 'atoi()' verwenden kann, die erklären, warum ich es nicht verwende, konnte ich diese direkte Frage nicht finden, und ich denke, es wäre nützlich, die Frage und die Antwort miteinander verknüpft zu haben richtig als Paar. –
(Ich bin auch neugierig zu sehen, was Antworten Leute kommen. Variation kann interessant sein.) –
Wurde das nicht zu Tode diskutiert? Haben Sie sich ein bisschen auf dieser Website umgesehen? –