DANrulz81 hat geschrieben:Code: Alles auswählen
for(i=0;*zeiger!=ende;i++)
printf("\nBuchstabe %2i:\t %c\tAdresse: %p",i+1,*zeiger++,zeiger);
Von solchen Operationen rate ich stark ab. Das Ergebnis ist soweit ich weiß undefiniert, auf jeden Fall ist es falsch. 'zeiger' zeigt bei der 2. Verwendung im printf() nämlich schon auf die nächste Adresse, nicht jene die ausgegeben wurde. Einfacher ist es hier mit 'i' als Index zu arbeiten, dafür hast du die Variable ja auch.
Aber du hast schon mal erkannt wo der Fehler liegt, sehr gut
Bebu hat geschrieben:dani93 hat geschrieben:Doch, das macht der Compiler automatisch.
Mhh, danke, das wusste ich gar nicht. Aber ich arbeite auch so gut wie nie mit C-Strings.
Ist irgendwie logisch, sonst müsste man sogar bei einem printf() die Länge mit angeben:
Woher sollte printf() ohne \0 wissen wo der String aus ist?
EDIT:
DANrulz81 hat geschrieben:Edit: Das mit dem Debuggen würde ich gerne machen, allerdings steige ich bei Code::Blocks nicht so ganz durch, wie das gehen soll.

Du setzt einen Breakpoint (klick rechts neben eine Zeilennummer) und startest das Programm im Debug-Modus (Debug -> Start). Danach kannst du es mit "Next Instruction" Schritt für Schritt abarbeiten.