C
> Entschuldigung für den extra Thread. Ich wollte eigentlich in einem bestehenden posten.
die freiheit hab ich mir genommen, weil dein code eine laengere diskussion benoetigt, die mit "teilstring aus string" nur entfernt was zu tun hat.
> ...Also mache aus jedem leerzeichen ein ende des teilstrings
wenn p ein pointer sein soll, dann musst du ihn dereferenzieren, um an den speicher zu kommen, auf den gezeigt wird.
die zeile muesste dann so lauten:
*p = 0;
p an sich ist nur die adresse, auf die gezeigt wird. der stern bewirkt, dass man jetzt den speicher an dieser adresse wie eine "normale" variable benutzen kann.
> und kopiere jedes Zeichen in einen string/array.
das wird nirgends gemacht. wenn du damit den switch meinst, die zuweisungen sind verkehrtherum und dort werden nur zeiger kopiert, keine strings.
c strings sind eine gewoehnungsbeduerftige sache, leider. fuer anfaenger sind strings mit das schwerste, weil sie gleichzeitig zeiger verlangen.
du kannst dir c strings so vorstellen, dass irgendwo im arbeitsspeicher eine reihe von 8-bit-zahlen liegt, die fuer die zeichen des strings stehen. um mit dieser zeichenkette arbeiten zu koennen, muss dieser speicher gleichzeitig einem array gehoeren (char feld[20] = "Hallo") oder man braucht einen zeiger auf das erste zeichen (*char zeiger = "Hallo"; zeigt auf das 'H'). weil man in der regel von einem string nur einen zeiger auf das erste zeichen hat (der name eines arrays laesst sich wie ein zeiger benutzen), muss das ende des strings mit einer null abgeschlossen werden. mit "null" meine ich keine '0', sondern eine ascii-null, also 0, 0x00 oder '\0'.
*>und der Pointer ist doch mit p=Satz; deklariert oder?
nein.
eine deklaration (d.h. die variable erschaffen und typ festlegen) wuerde so aussehen:
char *p;
die zuweisung wuerde dann so aussehen:
p = Satz; /* hier werden wieder nur pointer kopiert, nicht die eigentlichen zeichen */