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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.