Forum: Mikrocontroller und Digitale Elektronik isdigit( char aus String);


von Hajo H. (sharki)


Lesenswert?

Moin moin

ich hänge hier :

BYTE i;
char *Time;
isdigit(Time[i]));

oder muß das heißen

isdigit(*Time+i));


Manchmal gehen mir die Zeiger auf den Zeiger ;-)

von Karl H. (kbuchegg)


Lesenswert?

Hajo H. schrieb:

> Manchmal gehen mir die Zeiger auf den Zeiger ;-)

:-)

> isdigit(*Time+i));

fast

  isdigit( *(Time+i) );

Aber:
Es spielt keine Rolle

   isdigit( Time[i] );

ist perfekt und absolut identisch.

> Manchmal gehen mir die Zeiger auf den Zeiger ;-)
Du kannst in C immer einen Zugriff über Pointer durch Array-Syntax 
ersetzen. Dies ist per Design so, denn in C gilt

      *( Pointer + Index )   <==>  Pointer[Index]

D.h. Ob Arraysyntax oder Zugriff über explizites Dereferenzieren 
entscheidest du anhand der Situation. Was eben klarer ist.

Hier hast du es mit einer Abfolge von Zeichen zu tun. Eine klassische 
Array-Situation. Daher spricht nichts dagegen, dafür auch Array-Syntax 
zu benutzen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Hajo Harms schrieb:
> isdigit(Time[i]));
> oder muß das heißen
> isdigit(*Time+i));
Je nach dem, wo die fehlenden Klammern sitzen, kann das das selbe 
sein...

Denn
 *(Time+i)
ist was anderes als
 (*Time+i)

Naja, Pech, Zweiter... ;-)

von Hajo H. (sharki)


Lesenswert?

Danke sehr

ich dachte schon ich hätte nen hau.

Der Fehler lag woanders. Ich habe im String die Stelle 3 auch mit 3 
adressiert und nicht mit 2.

Is halt doch Fasching :-)

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.