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.
if (strcmp(zeichen,muster)) {...} if (strncmp(zeichen,muster,4)) {...}
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^^
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
Rene schrieb:
> kannst du mir ein gutes buch empfehlen?
Den Klassiker
"Kernighan & Ritchie, Programmieren in C"
oder in Kurzform: K&R
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.