Forum: Compiler & IDEs Zeichenkette zerlegen und auswerten


von Sebastian A. (xxlxx)


Lesenswert?

Hi

ich beschreibe mal mein problem denn ich weis gar nicht wo ich ansetzen 
kann. mir fehlen die schlagworte für die Suche.

ich habe eine Zeichenkette "abcdefg0123455" diese soll so zerlegt und 
verarbeitet werden.
1
zeichenkette 
2
Schleife anfang
3
4
        zeichen holen ( pos 1 ) 
5
        wenn zeichen = "XY" dann 
6
        ++ pos
7
8
schleife ende wenn alle zeichen verarbeiet sind


danke
Sebastian

von Klaus W. (mfgkw)


Lesenswert?

Bei der Beschreibung stellt sich die Frage, ob es auch verständlicher 
geht?
Auch nach mehrmaligem Lesen weiß ich nicht, was du vorhast.

Soll das C werden?
Kannst du ansatzweise C?

Ggf. hilft dann der Standardhinweis auf ein gutes C-Buch,

von hda (Gast)


Lesenswert?

Ich welcher Programmiersprache ?

Grundsätzlich sollte so was aber mit einer while-loop innerhalb einer 
for-loop gehen.

von Sebastian (Gast)


Lesenswert?

Hmm . Ich versuche es mal anders

Ich habe ich Zeichenkette aus Buchstaben und Zahlen.
Jetzt möchte in in einer Schleife diese Kette zerlegen und gleich 
auswerten.
Wenn die Kette abgearbeitet ist wird die Schleife beendet.
Das ganz soll zeichenweise passieren.

Beispiel :
Zeichenkette "abcdabcdabxd"
Bei a soll Note a gespielt werden
Bei b soll Note b gespielt werden
Usw. Bis alles abgearbeitet ist.

Sebastian

von Klaus W. (mfgkw)


Lesenswert?

Und was willst du da zerlegen?

Wenn ich das richtig sehe willst du nix zerlegen, sondern einfach 
entlanglaufen und auf jedes Zeichen irgendwie reagiern?

C-Buch -> Grundlagen

von Klaus W. (mfgkw)


Lesenswert?

1
   ...
2
   char *p = "abfjebfjwbvwoi";
3
   while( *p )
4
   {
5
       ... mach was mit *p ...
6
       p++;
7
   }
8
   ...

von hda (Gast)


Lesenswert?

Es bleibt immer noch die Frage: In welcher Programmiersprache ?

Aber belese dich doch mal zum Thema 
Stringverarbeitung,Vergleichsoperatoren, If-Bedingungen und Schleifen. 
Das ist alles was Du hierzu benötigst.

von Peter II (Gast)


Lesenswert?

hda schrieb:
> Es bleibt immer noch die Frage: In welcher Programmiersprache ?

welche Programmiersprache  kann der der GCC? (siehe Forum)

von Klaus W. (mfgkw)


Lesenswert?

C, C++, Obj.-C, Pascal, div. Fortran, Ada, div. ASM, ...

von Sebastian A. (xxlxx)


Lesenswert?

Klaus Wachtler schrieb:
> ...
>    char *p = "abfjebfjwbvwoi";
>    while( *p )
>    {
>        ... mach was mit *p ...
>        p++;
>    }
>    ...

Danke. das ist das was ich gesucht habe. ich werds gleich morgen testen. 
ich hoffe mal das steht nicht bei den grundlagen im buch ganz vorne. ich 
habe da ganz anders gedacht zund wollte den string zerlegen mit der copy 
funktion und dann auswerten ... ich hoffe mal das es geht sieht aber 
logisch aus.

danke

von Sebastian A. (xxlxx)


Lesenswert?

halli hallo und guten morgen

leider tut das noch nicht recht ...
1
    
2
while(1)    
3
  {
4
  char *p = "abbbaababbaabba";
5
  while( *p )
6
     {  
7
       if (*p=="a") LED_off();
8
       if (*p=="b") LED_on();
9
     p++;
10
       }
11
12
13
  }

ich habe nur eine LED zum testem am PIN. Aber das if == kommt gar nicht 
bis zur LED Anweisung.

sebastian

von Stefan E. (sternst)


Lesenswert?

"a" und "b" sind Strings, und man kann Strings nicht mit == vergleichen. 
Du willst einzelne Zeichen vergleichen. Wie schreibt man einzelne 
Zeichen in C?

von Sebastian (Gast)


Lesenswert?

Als hex ?

von Andreas W. (geier99)


Lesenswert?

*p=='a'

von Sebastian (Gast)


Lesenswert?

Oh oh ... OEhne Worte :)

Ich lese weiter mein Buch ...

Danke für den Tipp ...

von Rolf M. (rmagnus)


Lesenswert?

Lies bitte dein C-Buch! Wenn du bei jeder der elementaren Grunlagen 
hier nachfragen mußt, wird das sonst eine ziemlich unmständliche Art, C 
zu lernen.

von Klaus W. (mfgkw)


Lesenswert?

Klaus Wachtler schrieb:
> Ggf. hilft dann der Standardhinweis auf ein gutes C-Buch

Klaus Wachtler schrieb:
> C-Buch -> Grundlagen

hda schrieb:
> Aber belese dich doch mal zum Thema
> Stringverarbeitung,Vergleichsoperatoren, If-Bedingungen und Schleifen.
> Das ist alles was Du hierzu benötigst.

von Matthias L. (Gast)


Lesenswert?

>       if (*p=="a") LED_off();
>       if (*p=="b") LED_on();

Mal von dem schon angesprochenen Stringvergleich, würde ich ein 
switch-case empfehlen.

von Wilhelm; DK4TJ (Gast)


Lesenswert?

Hallo Sebastian und ihr anderen.

String-Handling ist eine mühsame Sache, wenn man es noch nicht begriffen 
hat und also nicht kann.
So etwas Einfaches (!?) ging schon mit einem C64 mit seinem wenig 
komfortablen  Basic vor 30 Jahren.
Muss man halt eben lernen.
Funktionen wie LEFT(), RIGHT(), SUBSTR() und andere übt man am besten 
mit kleinen Programmen; aber NICHT! in einem Mikrocontroller.
Wenn es dann sein muss, selbst GW-Basic oder Turbo-Pascal3 auf DOS-Ebene 
reichen zum Lernen mehr als aus.
So ein Krempel läuft auch! unter XP in der DOS-Box problemlos.

Die Lösung deines Poblems haben die anderen dir ja schon aufgezeigt, ich 
hoffe, du kommst damit klar.

Sich alles aus Büchern anzulesen zu müssen, ist mühsam aber es nutzt 
nichts.
Hier zu fragen ist einfacher, aber in diesem Forum macht man sich 
schnell zum Narren. Bissige Kommentare gibt es zu Hauf.
Darum: Lieber erst nachdenken und nachlesen; und wenn es dann gar! nicht 
mehr geht: fragen.

@Ihr anderen:

Verteufelt mich nicht wegen Erwähnung von GW-Basic und Turbo 3!

Muss das immer C sein?
Gibt es nicht genügend lesbare(!?) Programmiersprachen.

Nix für ungut

73 Wilhelm

PS:
C = Gürteltiersprache....?
Warum?
Der Quellcode sieht so aus, als wäre ein Gürteltier über die Tastatur 
gerollt...

von Wilhelm; DK4TJ (Gast)


Lesenswert?

Sorry,

hatte nicht mitbekommen, daß ich hier in einem C-Forum gelandet war.
Kommentare darum z. T. wohl nicht angebracht.

73 Wilhelm

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.