Forum: Compiler & IDEs Wie kann ich diesen String über überprüfen?


von Kapitän Blei (Gast)


Lesenswert?

Hallo

Wie kann ich das mit WinAVR umsetzen?

Ich empfange über den UART einen Befehl und speichere die einzelnen
Zeichen im Array UBefehl ab.
Jetzt möchte ich Prüfen ob die ersten 4 Zeichen den Namen "REV:"
besitzt.

Wie kann ich das schreiben ohne dass ich den Array in ein String
umschreiben muss?


MfG

Blei



char UBefehl[12];  //Befehlsbuffer für UART



UBefehl[0] = "R";
UBefehl[1] = "E";
UBefehl[2] = "V";
UBefehl[3] = ":";
UBefehl[4] = "A";
UBefehl[5] = "F";
UBefehl[6] = "B";

//Prüft den Befehl. Zeichen 0-3 müssen diesen Namen besitzen.

if (UBefehl[0,3] == "REV:")
{
  .. Ausführung Befehl
}

von mthomas (Gast)


Lesenswert?

Betr. "Unterschied" Array aus Char und String vielleicht nochmal ein
C-Buch konsultieren.

Loesungsvorschlag in der Art (nicht getestet):

#include <string.h>
//...
if ( strncmp( UBefehl, "REV:", 4 ) == 0 ) {
 // mach was
}

oder:

#include <avr/pgmspace.h>
//...
if ( strncmp_P( UBefehl, PSTR("REV:"), 4 ) == 0 ) {
 // mach was
}

Weiteres zu strncmp(_P) siehe avr-libc Dokumentation.

Martin Thomas

von Kapitän Blei (Gast)


Lesenswert?

Hallo mthomas

Danke du hast mir sehr geholfen.


Gruss

Blei

von Simon K. (simon) Benutzerseite


Lesenswert?

Ein String IST ein Array. Das besondere bei Strings ist, dass sie ein
Element mehr haben als effektive Zeichen drin sind. In diesem
zusätzlichen Element ist eine 0 drin, womit der String als
abgeschlossen gilt...

kopfschüttel

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.