Interpreter oder ähnliches zum vergleichen

Gast #1260800
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
#1260840
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.
Gast #1260882
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^^
Gast #1260883
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren