www.mikrocontroller.net

Forum: Compiler & IDEs Interpreter oder ähnliches zum vergleichen


Autor: René (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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:
#include <string.h>

.....

    if( strcmp( zeichen, "r01e" ) ==  0 )
    {
       // der String "r01e" wurde erkannt
    }

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

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

Autor: NurEinGast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if (strcmp(zeichen,muster)) {...}

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

Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/...



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

was bedeutet eigendlich die 4?

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

Autor: NurEinGast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rene schrieb:

> kannst du mir ein gutes buch empfehlen?

Den Klassiker
"Kernighan & Ritchie, Programmieren in C"

oder in Kurzform: K&R

Autor: NurEinGast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rene (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.