Inhalt eines pointers auslesen (c++)?

...komplette Frage anzeigen

2 Antworten

dass es sich bei der char c um einen pointer handelt.

Daran wird es am allerwenigsten liegen, denn: In deinem Beispiel kommt kein einziger Pointer vor...

Aber es könnte sein, dass die Funktion "_countof" (wo hast die überhaupt her? "Normales" C/C++ is das jedenfalls nich...) einen benötigt...

Also so wie das ganze aussieht, hast du irgendwo ein char-Array bzw. nen char-Pointer (aka C-String) und willst die Länge dessen ermitteln...

Das dürfte so gehen:

#include <string.h> //Für strlen()

//const char *c = ein C-String, dessen Inhalt nich (ohne weiteres) verändert werden kann.
void abc(const char *c){
int x = strlen(c); //x enthält jetzt die Länge des C-Strings c ohne das abshließende '\\\\0'
printf("%i", x);
}

int main(int argc, char *argv[]){
abc("foo.bar"); //Aufruf der Funktion abc mit einem (Constant-)C-String-Literal als Parameter
}

Allerdings sind da noch ein paar Kleinigkeiten:

es zwingend notwendig ist, dass ich die Länge einer char aus einer Funktion bestimmen kann.

Ein "char" hat keine Länge (bzw. nicht in dem Sinne), ein C-String (char-Array bzw. char-Pointer dagegen schon.)

Gibt es eine Möglichkeit den Pointer innerhalb der Funktion zu einer normalen char "umzuwandeln"?

"Mehrere":

void foo(char *c){
char a = *c;
char b = c[0];
//usw...
}
Antwort bewerten Vielen Dank für Deine Bewertung

Ich bin jetzt kein c++ Spezialist, aber das hat nichts mit einem Pointer zu tun (falls Du die Fehlermeldung mal genau lesen willst):

https://msdn.microsoft.com/de-de/library/ms175773(v=vs.120).aspx

_countof erwartet als Input ein Array und liefert die Anzahl der Elemente in dem Array. Char ist halt nun mal kein Array ... was soll _countof(Char) Deiner Meinung nach sein? Die Länge eines Char ist immer 1, da der Datentyp char per Definition immer einen einzigen Buchstaben enthält.

Was Du wahrscheinlich erreichen willst, ist etwas in der Art - text[] ist dann aber genau das erwartete Array

char text[] = "blabla";

int x = _countof(text)
Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?