Seite 1 von 2

[C++] C-strings und zeiger

Verfasst: Do Sep 10, 2009 5:47 pm
von soufian88

Code: Alles auswählen

#include <iostream>



using namespace std;



int main() {

   char carray[] = "Ein einfacher String";

   char *cptr1, *cptr2;

   

   cptr1 = carray;

   while( *cptr1 != ' ' ) {

      cptr1++;

   }

   cptr2 = ++cptr1;

   while( *cptr2 != ' ' ) {

      cptr2++;

   }   

   cout << cptr2-cptr1 << "\n";    

   return 0;

}












Weiß einer was die Zeilen hier bewirken ?

Code: Alles auswählen

while( *cptr1 != ' ' ) 

 while( *cptr2 != ' ' ) 
Ich weiß ist sehr leichte oder vielleicht dumme :) Frage aber ich komme nicht drauf.

Re: [C++] C-strings und zeiger

Verfasst: Do Sep 10, 2009 5:52 pm
von cloidnerux
Damit wird geschaut ob das aktuelle Zeichen einem Leerzeichen entspricht, damit es eine Abbruchbedingung gibt.

Re: [C++] C-strings und zeiger

Verfasst: Do Sep 10, 2009 5:54 pm
von soufian88
Aso danke.

Re: [C++] C-strings und zeiger

Verfasst: Do Sep 10, 2009 6:06 pm
von Xin
Wo immer Du das Tutorial her hast, nimm ein anders. ^^ (alternativ sag mir, wo das im Wiki steht...)

Schreib das (für Anfänger besser geeignet) in folgender Form:

Code: Alles auswählen

#include <iostream>

using namespace std;

int main() {
   char carray[] = "Ein einfacher String";
  
   // Nach dem ersten Leerzeichen suchen
   int index = 0;
   while( carray[index] != ' ' )
      index++;
 
   // bei index ist ein Leerzeichen
   int start = ++index;  // ...überspringen und als start merken

   // alles, was nicht Leerzeichen ist überspringen
   while( carray[index] != ' ' )
      index++;

   // Länge des Wortes ausgeben (Differenz von erstes Leerzeichen bis zweites Leerzeichen)
   cout << index - start << "\n";    
   return 0;
}
Das Programm ist gemeingefährlich. Denn niemand garantiert Dir, dass hinter dem gefundenen Wort auch ein Leerzeichen kommt... es könnte auch ein Null-Byte kommen, weil der String zu Ende ist und dann sucht das Programm solange, bis es ein Leerzeichen findet... Änderst Du carray auf "Ein", dann knallt's.


PS: Bitte keine überflüssigen Leerzeilen posten... danke.

Re: [C++] C-strings und zeiger

Verfasst: Do Sep 10, 2009 6:21 pm
von soufian88
Wo immer Du das Tutorial her hast, nimm ein anders.
Wirst dich wundern wenn ich das sage und wieso eigentlich ? 8-)
PS: Bitte keine überflüssigen Leerzeilen posten... danke.
ok.

Re: [C++] C-strings und zeiger

Verfasst: Do Sep 10, 2009 7:20 pm
von Xin
soufian88 hat geschrieben:
Wo immer Du das Tutorial her hast, nimm ein anders.
Wirst dich wundern wenn ich das sage und wieso eigentlich ? 8-)
Ich glaube, den Satz verstehe ich nicht... aber wenn ich mir überlege, was Du sagen könntest, so könntest Du fragen, warum ich einen Wechsel vorschlage.

Zeigerarithmetik ist wichtig. Aber nicht in dem Level, dass Du mit diesem Programm bearbeitest.

Re: [C++] C-strings und zeiger

Verfasst: Do Sep 10, 2009 8:42 pm
von soufian88
Aber nicht in dem Level, dass Du mit diesem Programm bearbeitest.
Wie findest du den Level schwierig oder leicht ?

Re: [C++] C-strings und zeiger

Verfasst: Fr Sep 11, 2009 9:03 am
von Xin
soufian88 hat geschrieben:
Aber nicht in dem Level, dass Du mit diesem Programm bearbeitest.
Wie findest du den Level schwierig oder leicht ?
Wie ich den Level finde?

Ich finde ihn leicht - ich programmiere seit 1994 in C und davor Assembler - was immer man in C macht, ist für einen Assemblerprogrammierer leicht.
Aber ich habe auch C/C++ mehrfach unterrichtet. Und das, was Du da lernst, bringe ich den Leuten als Verständnisübung bei, um Verständnis zu festigen.
Nicht als um das Problem zu lösen, was Du da hast. Du musst erstmal Verständnis entwickeln.
Das Programm ist nicht fehlertolerant, die Chance, dass es abschmiert ist hoch, dazu kommt die Zeigerarithmetik. Du hast als Anfänger damit mehrere Baustellen zu überblicken, wobei Du erstmal ein Verständnis für eine Baustelle entwickeln solltest. Ich halte das für eine Überforderung für einen Anfänger, Überforderung führt zu Frust, Frust zur Aufgabe.
Ich fordere meine Schüler (und die hassen mich dafür...), in dem sie ratlos auf ein begrenztes Problem jage, aber ich überfordere sie nicht, in dem ich sie ratlos auf mehrere Baustellen schicke.

Re: [C++] C-strings und zeiger

Verfasst: Fr Sep 11, 2009 1:22 pm
von soufian88
Verständnis für eine Baustelle entwickeln solltest. Ich halte das für eine Überforderung für einen Anfänger, Überforderung führt zu Frust, Frust zur Aufgabe.
Ich fordere meine Schüler (und die hassen mich dafür...), in dem sie ratlos auf ein begrenztes Problem jage, aber ich überfordere sie nicht, in dem ich sie ratlos auf mehrere Baustellen schicke.

Ich habe kein Lehrer begegnet der auf diese Denkweise denkt. ;)
Bei Frust würde ich eher Lustlos programmieren oder vielleicht aufhören zu programmieren denn ich kann Baustellen nur mit Spaß lernen und mit Spaß Frust umgehen oder sogar Frust mit Spaß entgegen kommen und die Baustellen meistern. :)

Re: [C++] C-strings und zeiger

Verfasst: Fr Sep 11, 2009 1:30 pm
von Xin
soufian88 hat geschrieben:
Verständnis für eine Baustelle entwickeln solltest. Ich halte das für eine Überforderung für einen Anfänger, Überforderung führt zu Frust, Frust zur Aufgabe.
Ich fordere meine Schüler (und die hassen mich dafür...), in dem sie ratlos auf ein begrenztes Problem jage, aber ich überfordere sie nicht, in dem ich sie ratlos auf mehrere Baustellen schicke.
Ich habe kein Lehrer begegnet der auf diese Denkweise denkt. ;)
Bei Frust würde ich eher Lustlos programmieren oder vielleicht aufhören zu programmieren denn ich kann Baustellen nur mit Spaß lernen und mit Spaß Frust umgehen oder sogar Frust mit Spaß entgegen kommen und die Baustellen meistern. :)
Wieso? Ich fruste sie ja nicht nur, sondern bereite einen Weg vor, dass sie sich um genau eine Aufgabe zu kümmern haben. Haben sie die gemeistert, so kommt der nächste Schritt.
Zeigerarithmetik ist weder am Anfang erforderlich, noch Hilfreich. Aber sie ist schön, um ein vorhandenes Verständnis zu bestätigen und zu festigen.