string vergleichen

Gast #4120402
Lesenswert?
• ▲
▼
Leider läuft das bei mir nicht mit dem vetgleich.

ich hab nun versucht was nach dem = ist auszugeben aber das funktioniert 
bei beiden Vergleichen nicht.

kann mir jemand weitethelfen

1
if(!strcmp_P(pname,PSTR("Lcd loeschen=")) )
2
 { 
3
   Lcd_print(pname): 
4
 }
5

6

7

8

9
if(!strcmp_P(pname,PSTR("Lcd loeschen=")) ) 
10
{ 
11
  Lcd_print(pname): 
12
}
#4120411
Lesenswert?
• ▲
▼
Wie gesagt strcmp vergleicht zwei Stings auf absolute Gleichheit, von 
anfang bis ende. Dein String mit dem du vergleichst ist "Lcd 
loeschen=clear", du willst aber wissen ob "Lcd loeschen=" darin 
vorkommt... klar gibt strcmp dort != 0 zurück. Nimm strstr und schau ob 
!= NULL und gut ist.
strstr liefert dir den Pointer auf den Anfang des Vergleichstrings den 
du suchst. Das was nach dem "=" ist bekommst du also mit "strstr(pname, 
"Lcd loeschen=") + 13"
Gast #4120707
Lesenswert?
• ▲
▼
avr stromer schrieb:
> Ich wollte erstmal den string nach dem = ausgeben.
Geht schon in die Richtung "Wie"

> zueest müsste ich ja erstmal wissen wie viele zeichen hinter dem = sind?
Musst du wirklich?

Zum suchen von einem Zeichen ist strchr besser: 
http://www.cplusplus.com/reference/cstring/strchr/
1
char *p;
2

3
if ((p=strchr(pname,'=')!=NULL) // ist ein = vorhanden
4
{ Lcd_print(p+1);
5
}
Gast #4120744
Lesenswert?
• ▲
▼
DirkB schrieb:
> avr stromer schrieb:
>> Ich wollte erstmal den string nach dem = ausgeben.
> Geht schon in die Richtung "Wie"
>
>> zueest müsste ich ja erstmal wissen wie viele zeichen hinter dem = sind?
> Musst du wirklich?
>
> Zum suchen von einem Zeichen ist strchr besser:
> http://www.cplusplus.com/reference/cstring/strchr/
> char *p;
>
> if ((p=strchr(pname,'=')!=NULL) // ist ein = vorhanden
> { Lcd_print(p+1);
> }

wie kann ich den string hinter dem = ausgeben das bekomm ich nicht hin
#4120778
Lesenswert?
• ▲
▼
Hier geht's ja um Controller. Ich nehm daher an, das soll ein command an 
einen controller sein. Ich wuerd den Codieren. Falls nicht allzuviele 
moeglichkeien ausgedrueckt werden sollen, kann man ihn zB  als ein paar 
Bytes ausdruecken. Allenfalls mit einem Protokoll, das nicht auf text 
beruht. Im Prinzip geht es darum, nicht benoetigte, und sinnlose 
Redundanz wegzulassen. Denn wenn der String auf Identitaet geprueft 
wird, kann man ebenso auf "01" pruefen.
Gast #4120780
Lesenswert?
• ▲
▼
Ich sehe gerade, dass ich eine Klammer vergessen habe:
1
if ((p=strchr(pname,'='))!=NULL) 
2
                        ^ da

avr stromer schrieb:
> wie kann ich den string hinter dem = ausgeben das bekomm ich nicht hin

Du willst Strings zerlegen und kennst dich nicht mit Zeiger aus?

Spiel damit erstmal auf dem PC rum. Da kannst du einfacher ein paar 
printf einfügen oder mit dem Debugger durchsteppen.

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