"We are back" « oc.at

[C] return - zeiger

lama007 08.02.2009 - 19:31 6765 52 Thread rating
Posts

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14699
Zitat von Luzandro
sondern? das mixed wird allerdings zu klein initialisiert


getchar liefert tatsächlich einen int zurück (iirc ist EOF ein int)
wird zeit fürs bett, hirn ist matsch. Beides selbstverständlich korrekt.

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11342
Zitat von Ringding
strtok verwendet einen statischen Puffer. Das würde also sogar funktionieren, außer in Multi-Thread-Situationen. Aber dafür gibt's ja strtok_r.

Wie groß sollte dieser Puffer deiner Meinung nach sein?
AFAIK hat das nur einen statischen *Pointer*, und es überschreibt den Originalstring.

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11342
Zitat von Luzandro
sondern? das mixed wird allerdings zu klein initialisiert

Ich würde eher sagen, es wird zu klein deklariert. :)

Vivo

Dreamworker
Avatar
Registered: May 2002
Location: Tal der Könige
Posts: 1478
Zitat von that
AFAIK hat das nur einen statischen *Pointer*...
Einen statischen Pointer ?! ... Der scheint mir doch eher ziemlich unstatisch :P

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von Vivo
Einen statischen Pointer ?! ... Der scheint mir doch eher ziemlich unstatisch :P
Ich denke er meint einen Pointer der auf einen statischen Bereich im Speicher zeigt, der kann sich aber natürlich auch ändern.

Und selbst wenn da ein Buffer verwendet wird, ich kann doch nicht einfach einen Pointer auf einen Buffer zurückgeben - egal wie groß der ist, entweder die strtok Funktion hat ein Memory Leak (und das bezweifle ich stark) oder irgendwann wird dieser Buffer geleert oder überschrieben - byebye Daten!

Vivo

Dreamworker
Avatar
Registered: May 2002
Location: Tal der Könige
Posts: 1478
Ja ich weiß ... und was er gesagt hat war ja eigentlich auch richtig:
Alles was strtok speichert sind die delimiter und ein pointer auf den aktuellen char im String der gerade bearbeitet wird...

Darin wird bei jedem Aufruf ein weiterer delimiter durch '\0' ersetzt und der Pointer um einen Token weitergschoben ...

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11342
Zitat von watchout
Ich denke er meint einen Pointer der auf einen statischen Bereich im Speicher zeigt, der kann sich aber natürlich auch ändern.

Ich meine sowas:

static char* pToken;

Und der zeigt in den String, den man an strtok übergeben hat.

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Aua... erfolgreich aneinander vorbei geschrieben...

Wie auch immer, das Buch-Beispiel bleibt auch damit falsch :p
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz