deepthroat
Erfahrenes Mitglied
Ja, das sieht man wie es "hilft" ;-]Ähm ja, also ich richte mich ein wenig nach dem Buch. C von A bis Z, ist nicht das beste, aber es hilft doch irgendwie.
Genau. Aber warum sollte man eine Funktion aufrufen um eine Variable auf NULL zu setzen?Kann also nicht ganz erklären warum der Autor das ganze auf malloc(0) setzt :-/ Aber malloc(0) ist ja eigentlich das gleiche wie NULL, oder?
Ein C Zeiger ist in der Regel auf einer 32bit Maschine 32bit, also 4 Byte groß, auf 64bit dann 8 Byte.Der Pointer auf char* ( so hab ich es verstanden ) erweitert sich selbst. Das bedeutet das es sich den Speicher nimmt was es braucht. Und char* ist ja 16 lang ... und durch den Pointer wird es immer wieder um 16 größer ... hmm, oder denk ich nun falsch?
Von vornherein einen char** zu verwenden ist eigentlich nur unnütz kompiliziert. Aus der Manpage von getline:
C:
char *line = NULL;
size_t len = 0;
getline(&line, &len, ...);
Du hast außerdem nirgendwo *line_ptr und *t initialisiert - was zu undefiniertem Verhalten führen kann.
Außerdem passen die Typen von t und dem Rückgabewert von malloc nicht zusammen.
In C99 ist "return 0;" in dem Fall äquivalent zu "return NULL;". Das ist also schon OK.Das ist ganz einfach ... damit eclipse aufhört zu meckern! Ohne Return, gibt der mir meistens Warnings aus. Daher hau ich einfach nen return 0; unten dran. Stören tuts eigentlich nicht, weil nen rückgabe wert gibts ja auch eigentlich nicht, schlicht nur speicher verschwendung.
Gruß
PS: Übrigens hatte ich schon mal einen Fehler in dem Buch "C von A bis Z" gemeldet, vom Verlag lediglich die Antwort
bekommen: "Ja, wir sagen dem Autor Bescheid". Geändert hat sich (soweit ich weiß) aber nichts. Besorg dir lieber ein vernünftiges Buch.