itoa - warum char* itoa?

Gast #2796154
Hallo,

auf folgender Seite habe ich die itoa-Funktion nachgelesen:
http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/

Warum ist die Funktion als
1
char *  itoa ( int value, char * str, int base );
 deklariert? Mit Rückgabewert?

Ich gebe doch *str als Eingangsparameter ein. D.h. die Funktion itoa 
speichert den String auf den Zeiger ab. Ein Rückgabewert ist somit gar 
nicht erforderlich. Man könnte sie auch als
1
void itoa
 deklarieren.

Ich habe itoa zur Übung auch mal selber geschrieben und als void 
deklariert.


Ich habe das schon öfters festgestellt, dass Funktionen einen Datentyp 
haben aber eigentlich nichts zurückgeben....


Wwas hat das für Vorteile?
#2796159
Mit einem Rückgabewert kannst du auf Fehler reagieren. Das macht zwar 
bei itoa vielleicht nicht so arg viel Sinn, aber wenn du beispielsweise 
den Fall konstruierst, dass du itoa mit base=0 aufrufst, dann könnte die 
Funktion NULL  zurückgeben und dir damit mitteilen, dass was schief 
gelaufen ist.

Gruß
Marius
Moderator #2796353
Stefan schrieb:
> Auch in if Ausrücken ist das praktisch:
>
> if (itoa(...)) {

Warum sollte man so etwas machen wollen? Die Funktion itoa liefert nur
dann 0 zurück, wenn auch der übergebene Char-Pointer 0 ist. Wenn dieser
Fall tatsächlich auftreten kann, sollte er schon vor dem Aufruf von itoa
abgefangen werden.

Der wahre Grund, warum itoa den übergebenen Pointer als Rückgabewert
liefert, wurde schon mehrfach genannt:

Man kann
1
  puts(itoa(n, str, base));

statt
1
  itoa(n, str, base);
2
  puts(str);

schreiben.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.