Interpreter oder ähnliches zum vergleichen

Gast #1260800
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.