Forum: Compiler & IDEs Interpreter oder ähnliches zum vergleichen


von René (Gast)


Lesenswert?

hallo jungs,

ich habe folgendes problem, habe eine kommunikation über uart (interupt 
gesteuert). möchte einen string über uarts schicken (das funzt auch) der 
in einem ringpuffer gespeichert wird (funzt auch). anschließend wird der 
sting einer variablen übergeben. nun möchte ich den string mit einen 
vorgegebenen vergleichen. und die funzt nicht.

hat die variable den string "r01e", und wenn ich einer anderen variablen 
diese vorgabe zuweise und es mit einer if funktion vergleiche dann 
funktioniert das net so richtig.

BSP.

string aus ringpuffer ist zeichen = r01e

und muster = "r01e"

if(zeichen=muster){anweisung} usw.

könnt ihr mir da vllt helfen? oder sind das noch zu wenige 
informationen?

danke schonmal, grüsse rene

von Karl H. (kbuchegg)


Lesenswert?

René schrieb:

> string aus ringpuffer ist zeichen = r01e
>
> und muster = "r01e"
>
> if(zeichen=muster){anweisung} usw.
>
> könnt ihr mir da vllt helfen?

Dein größter Fehler:
Du versuchst C ohne ein vernünftiges Buch zu lernen.

Denn wenn du das hättest, wüsstest du

1) das Vergleiche in C immer mit == geschrieben werden
2) das man Strings so nicht vergleichen kann, weil das nämlich
   ein Pointervergleich wäre. Effektiv würde damit nur bestimmt, ob
   beide Strings an derselben Stelle im Speicher gespeichert sind. Und
   das ist in den seltensten Fällen, das was man möchte.

Der Name deiner Variablen, 'zeichen' macht mich stutzig. Da könnte sich 
noch ein Fehler verbergen.

Ansonsten:
1
#include <string.h>
2
3
.....
4
5
    if( strcmp( zeichen, "r01e" ) ==  0 )
6
    {
7
       // der String "r01e" wurde erkannt
8
    }

In der Zwischenzeit, bis du dein C-Buch gekauft hast, kannst du zur 
Überbrückung auch mal folgendes lesen:

http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F

Aber hol dir ein Buch, du wirst es brauchen! In C warten noch viele 
Überraschungen auf dich.

von NurEinGast (Gast)


Lesenswert?

if (strcmp(zeichen,muster)) {...}

if (strncmp(zeichen,muster,4)) {...}

von Rene (Gast)


Lesenswert?

danke für die schnelle antwort :), der anstoss reicht mir schon! sry 
wegen dem if(...=...), das hatte ich hier falsch gepostet. in meinem 
programm ist der vergleich == das wusste ich schon ;).

kannst du mir ein gutes buch empfehlen?

z.Z nutze ich www.mikrocontroller.net gcc tut
und http://home.fhtw-berlin.de/~junghans/cref/CONCEPT/expressions.html



>if (strncmp(zeichen,muster,4)) {...}

was bedeutet eigendlich die 4?

sry wegen dem "dummen fragen"... aber ich steh noch ziemlich am anfang^^

von NurEinGast (Gast)


Lesenswert?

ich habe extra auch die strncmp(..) Funktion hingeschrieben, damit Du 
siehst dass es auch so was gibt.
Gib einfach mal in google   strncmp   ein - und schon wirst Du mir 
Info's erschlagen :-)

> was bedeutet eigendlich die 4?

... in Kurzform .. von den beiden Strings werden nur die ersten 4 
Zeichen verglichen.

NurEinGast

von Karl H. (kbuchegg)


Lesenswert?

Rene schrieb:

> kannst du mir ein gutes buch empfehlen?

Den Klassiker
"Kernighan & Ritchie, Programmieren in C"

oder in Kurzform: K&R

von NurEinGast (Gast)


Lesenswert?

Kannst Du Englisch ?
Dann kannst Du ach mal unter
http://www.iu.hio.no/~mark/lectures/C-Tut-4.02.pdf
schauen.

Oder vielelicht ist ja
http://openbook.galileocomputing.de/c_von_a_bis_z/
was für Dich.


NurEinGast

von Rene (Gast)


Lesenswert?

danke für die links bzw die buchtipps :) eure erklärung hat mir aber 
schon gut weiter geholfen! :)

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.