Pointer
Pointer
Hallo an alle, ich bin Anfänger und lerne ich gerade "C". Hier habe ich Probleme mit einer Aufgabe.
Ich kann nicht in der while schleife habe alles versucht. In der while schleife wird geprüft, ob wahr oder
falsch ist, da der Ausdruck (der Zeiger) nicht Null ist wird die Bedingung erfüllt ja aber es ist eine Endlose Schleife.
Wenn ich gebe dass (*s != ´\0) dann wird die Schleife nicht erfüllt. Ich checke das irgendwie nicht.
Werde mich freuen wenn mir jemand erklären kann, wo meiner Fehler ist. Danke viel Malls.
Ich kann nicht in der while schleife habe alles versucht. In der while schleife wird geprüft, ob wahr oder
falsch ist, da der Ausdruck (der Zeiger) nicht Null ist wird die Bedingung erfüllt ja aber es ist eine Endlose Schleife.
Wenn ich gebe dass (*s != ´\0) dann wird die Schleife nicht erfüllt. Ich checke das irgendwie nicht.
Werde mich freuen wenn mir jemand erklären kann, wo meiner Fehler ist. Danke viel Malls.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Re: Pointer
Die Bedingung sehe ich in deinem Code nirgends.Ivo hat geschrieben:In der while schleife wird geprüft, ob wahr oder falsch ist, da der Ausdruck (der Zeiger) nicht Null ist wird die Bedingung erfüllt ja aber es ist eine Endlose Schleife.
Code: Alles auswählen
while(*s)
Code: Alles auswählen
while(*s != '\0')
Gehen wir dein Beispiel durch.Ivo hat geschrieben:Wenn ich gebe dass (*s != ´\0) dann wird die Schleife nicht erfüllt. Ich checke das irgendwie nicht.
Beim ersten Schleifendurchlauf zeigt s auf dein erstes Zeichen, also ist *s == 'I'.
Nun kommt die if-Bedingung. Ist *s ('I') == alt ('e')? => Nein. Was wird gemacht? Nichts!
Nächster Durchlauf. s zeigt auf dein erstes Zeichen, also ist *s == 'I'.
Nun kommt die if-Bedingung. Ist *s ('I') == alt ('e')? => Nein. Was wird gemacht? Nichts!
Nächster Durchlauf. s zeigt auf dein erstes Zeichen, also ist *s == 'I'.
Nun kommt die if-Bedingung. Ist *s ('I') == alt ('e')? => Nein. Was wird gemacht? Nichts!
...
Erkennst du den Fehler?
Re: Pointer
danke nufan, jetzt habe ich verstanden.
ich habe es so geschrieben. Danke für die ausführliche Erklärung.
ich habe es so geschrieben. Danke für die ausführliche Erklärung.

Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Re: Pointer
Du hast noch ein Problem, falls alt == neu ist.
Re: Pointer
also du meinst ist *s == ´E´. Nun kommt die If- Bedingung.
ist *s (´E´) != alt (´E´) => nein => else-Bedingung.
*s(´E´) = neu also E = E . Du meinst , dass ich noch
eine else-Bedingung brauche falls alt == neu ist?
ist *s (´E´) != alt (´E´) => nein => else-Bedingung.
*s(´E´) = neu also E = E . Du meinst , dass ich noch
eine else-Bedingung brauche falls alt == neu ist?
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Pointer
Moin Ivo,
bitte poste Text, wenn Du Quelltext posten möchtest, dann können wir zitieren, statt abzuschreiben.
Du ersetzt ein Zeichen oder Du lässt es. In jedem Fall musst Du nachdem Du ersetzt hast - oder es gelassen hast - auf das nächste Zeichen schauen. s++ ist also in jedem Fall durchzuführen und sollte daher unabhängig von der if-Bedingung stehen.
bitte poste Text, wenn Du Quelltext posten möchtest, dann können wir zitieren, statt abzuschreiben.
Du ersetzt ein Zeichen oder Du lässt es. In jedem Fall musst Du nachdem Du ersetzt hast - oder es gelassen hast - auf das nächste Zeichen schauen. s++ ist also in jedem Fall durchzuführen und sollte daher unabhängig von der if-Bedingung stehen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Pointer
SorryXin hat geschrieben:Moin Ivo,
bitte poste Text, wenn Du Quelltext posten möchtest, dann können wir zitieren, statt abzuschreiben.
Danke dir aber ich verstehe jetzt nicht was ich machen sollXin hat geschrieben: Du ersetzt ein Zeichen oder Du lässt es. In jedem Fall musst Du nachdem Du ersetzt hast - oder es gelassen hast - auf das nächste Zeichen schauen. s++ ist also in jedem Fall durchzuführen und sollte daher unabhängig von der if-Bedingung stehen.

Wie unabhängig von der if-Bedingung?
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Pointer
Dann will ich mal abtippen... ^^Ivo hat geschrieben:Danke dir aber ich verstehe jetzt nicht was ich machen sollXin hat geschrieben: Du ersetzt ein Zeichen oder Du lässt es. In jedem Fall musst Du nachdem Du ersetzt hast - oder es gelassen hast - auf das nächste Zeichen schauen. s++ ist also in jedem Fall durchzuführen und sollte daher unabhängig von der if-Bedingung stehen.![]()
Wie unabhängig von der if-Bedingung?
Code: Alles auswählen
while(*s)
{
// Eventuell austauschen
if( *s == alt )
*s = neu;
// zum nächsten Element springen, unabhängig davon, ob ausgetauscht wurde
s++;
}
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Pointer
Ja das habe ich auch ausprobiert es ist eine endlose schleife es kommt nicht raus.Xin hat geschrieben:Dann will ich mal abtippen... ^^Ivo hat geschrieben:Danke dir aber ich verstehe jetzt nicht was ich machen sollXin hat geschrieben: Du ersetzt ein Zeichen oder Du lässt es. In jedem Fall musst Du nachdem Du ersetzt hast - oder es gelassen hast - auf das nächste Zeichen schauen. s++ ist also in jedem Fall durchzuführen und sollte daher unabhängig von der if-Bedingung stehen.![]()
Wie unabhängig von der if-Bedingung?
Code: Alles auswählen
while(*s) { // Eventuell austauschen if( *s == alt ) *s = neu; // zum nächsten Element springen, unabhängig davon, ob ausgetauscht wurde s++; }

Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Pointer
Erstens: Poste Quelltext als Text - erwähnte ich das schon?
Zweitens: Du hast etwas anderes geschrieben. Die Klammern {} schreibt man nicht, weil sie so schön geschwungen aussehen, sondern weil sie die darin befindlichen Befehle zu einem Befehlspaket zusammenfügen. Die Befehle sind dann entsprechend nicht unabhängig voneinander.
Zweitens: Du hast etwas anderes geschrieben. Die Klammern {} schreibt man nicht, weil sie so schön geschwungen aussehen, sondern weil sie die darin befindlichen Befehle zu einem Befehlspaket zusammenfügen. Die Befehle sind dann entsprechend nicht unabhängig voneinander.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.