Seite 1 von 2
					
				Pointer
				Verfasst: Fr Sep 26, 2014 4:17 pm
				von Ivo
				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.
			 
			
					
				Re: Pointer
				Verfasst: Fr Sep 26, 2014 6:54 pm
				von nufan
				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.
Die Bedingung sehe ich in deinem Code nirgends.
ist im Prinzip nur Kurzschreibweise für:
Ivo hat geschrieben:Wenn ich gebe dass (*s != ´\0) dann wird die Schleife nicht erfüllt. Ich checke das irgendwie nicht.
Gehen wir dein Beispiel durch.
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
				Verfasst: Fr Sep 26, 2014 7:36 pm
				von Ivo
				danke nufan, jetzt habe ich verstanden. 
ich habe es so geschrieben. Danke für die ausführliche Erklärung. 

 
			
					
				Re: Pointer
				Verfasst: Fr Sep 26, 2014 8:11 pm
				von nufan
				Du hast noch ein Problem, falls alt == neu ist.
			 
			
					
				Re: Pointer
				Verfasst: Sa Sep 27, 2014 9:30 am
				von Ivo
				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?
			 
			
					
				Re: Pointer
				Verfasst: Sa Sep 27, 2014 10:21 am
				von Xin
				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.
			 
			
					
				Re: Pointer
				Verfasst: Sa Sep 27, 2014 11:50 am
				von Ivo
				Xin hat geschrieben:Moin Ivo,
bitte poste Text, wenn Du Quelltext posten möchtest, dann können wir zitieren, statt abzuschreiben.
Sorry
Xin 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.
Danke dir aber ich verstehe jetzt nicht was ich machen soll  
 
 
Wie unabhängig von der if-Bedingung?
 
			
					
				Re: Pointer
				Verfasst: Sa Sep 27, 2014 12:42 pm
				von Xin
				Ivo hat geschrieben:Xin 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.
Danke dir aber ich verstehe jetzt nicht was ich machen soll  
 
 
Wie unabhängig von der if-Bedingung?
 
Dann will ich mal abtippen... ^^
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++;
}
 
			
					
				Re: Pointer
				Verfasst: Sa Sep 27, 2014 1:11 pm
				von Ivo
				Xin hat geschrieben:Ivo hat geschrieben:Xin 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.
Danke dir aber ich verstehe jetzt nicht was ich machen soll  
 
 
Wie unabhängig von der if-Bedingung?
 
Dann will ich mal abtippen... ^^
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++;
}
 
Ja das habe ich auch ausprobiert es ist eine endlose schleife es kommt nicht raus. 

 
			
					
				Re: Pointer
				Verfasst: Sa Sep 27, 2014 2:09 pm
				von Xin
				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.