[C++] C-strings und zeiger

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
soufian88
Beiträge: 288
Registriert: So Jan 18, 2009 1:01 pm

[C++] C-strings und zeiger

Beitrag von soufian88 » Do Sep 10, 2009 5:47 pm

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.
C ( Durchschnittlich ) C++ (am Lernen)

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

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

Beitrag von cloidnerux » Do Sep 10, 2009 5:52 pm

Damit wird geschaut ob das aktuelle Zeichen einem Leerzeichen entspricht, damit es eine Abbruchbedingung gibt.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
soufian88
Beiträge: 288
Registriert: So Jan 18, 2009 1:01 pm

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

Beitrag von soufian88 » Do Sep 10, 2009 5:54 pm

Aso danke.
C ( Durchschnittlich ) C++ (am Lernen)

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

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

Beitrag von Xin » Do Sep 10, 2009 6:06 pm

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.
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.

Benutzeravatar
soufian88
Beiträge: 288
Registriert: So Jan 18, 2009 1:01 pm

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

Beitrag von soufian88 » Do Sep 10, 2009 6:21 pm

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.
C ( Durchschnittlich ) C++ (am Lernen)

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

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

Beitrag von Xin » Do Sep 10, 2009 7:20 pm

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.
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.

Benutzeravatar
soufian88
Beiträge: 288
Registriert: So Jan 18, 2009 1:01 pm

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

Beitrag von soufian88 » Do Sep 10, 2009 8:42 pm

Aber nicht in dem Level, dass Du mit diesem Programm bearbeitest.
Wie findest du den Level schwierig oder leicht ?
C ( Durchschnittlich ) C++ (am Lernen)

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

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

Beitrag von Xin » Fr Sep 11, 2009 9:03 am

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.
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.

Benutzeravatar
soufian88
Beiträge: 288
Registriert: So Jan 18, 2009 1:01 pm

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

Beitrag von soufian88 » Fr Sep 11, 2009 1:22 pm

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. :)
C ( Durchschnittlich ) C++ (am Lernen)

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

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

Beitrag von Xin » Fr Sep 11, 2009 1:30 pm

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.
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.

Antworten