rückgabewert von strchr

Gast #334176
Lesenswert?
• ▲
▼
hallo, ich hab in meinem programm folgende zeilen stehen:

char s[30];
char string[30];  // empfangener string
uint8_t *p;

p = strchr(string , 0x50);  // suche nach "P"
sprintf( s , "%02d" , *p);



und hier mein problem: wenn kein "P" im string vorkommt ist der wert
0 was ja richtig ist. wenn in meinem string ein "P" steht kommt als
wert immer 80 zurück. müsste ich da nicht die position des zeichens als
rückgabewert erhalten?

gruß michael
#334177
Lesenswert?
• ▲
▼
> müsste ich da nicht die position des zeichens als
> rückgabewert erhalten?

Ja. Die kriegst du auch.

Was du aber mittels sprintf in den String s schreibst
ist ja nicht die Adresse die strchr dir liefert, sondern
welches Zeichen dort steht. Und das ist naturgemäß nun
mal 'p'.

'p' == 0x50 == 80

Wenn du wissen willst, welche Adresse die strchr liefert,
dann musst du das schon so ausgeben lassen:

    sprintf( s, "%p", p );
Gast #334178
Lesenswert?
• ▲
▼
okay, das ist verständlich.

hab nun meinen code nach deinem beispiel geändert.
nun bekomme ich als wert 0x121 zurück wenn das zeichen an erster stelle
steht. 0x122 für die zweite stelle. wie kann ich jetzt damit was
anfangen? muss ich evtl. noch die startadresse des strings abziehen?
Gast #334180
Lesenswert?
• ▲
▼
ja, genau denn index hätte ich gern. probier das ganze morgen mal aus.
sonst wüste ich nicht wofür die 0x121 stehen sollten. geb dann bescheid
ob´s so funktioniert.

danke schonmal für die hilfe
Gast #334182
Lesenswert?
• ▲
▼
hmm, okay ist nun verständlich und klar.

doch nun nochmal eine frage: wie komme ich nun an den index heran an
dem das zeichen steht?

if( Found )
    Index = Found - string;

das lässt der compiler nicht zu, da found und string ja pointer und
index integer ist. fehlermeldung: invalid operants to binary

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