C Durchlaufen char-Arrays mit einem Zeiger

Ich bin sehr neu in C und wollte Fragen, wie man jedes element eines Arrays mit einem pointer. Das ist einfach, wenn und nur wenn Sie wissen, die Größe des Arrays.
So lassen Sie den be-code:

#include <stdio.h>

int main (int argc, string argv[]) {
    char * text = "John Does Nothing";
    char text2[] = "John Does Nothing";

    int s_text = sizeof(text); //returns size of pointer. 8 in 64-bit machine
    int s_text2 = sizeof(text2); //returns 18. the seeked size.

    printf("first string: %s, size: %d\n second string: %s, size: %d\n", text, s_text, text2, s_text2);

    return 0;
}

Nun möchte ich Sie bestimmen die Größe der text. um dies zu tun, fand ich heraus, dass der String endet mit einem '\0' Charakter. Also schrieb ich die folgende Funktion:

int getSize (char * s) {
    char * t; //first copy the pointer to not change the original
    int size = 0;

    for (t = s; s != '\0'; t++) {
        size++;
    }

    return size;
}

Diese Funktion jedoch nicht funktionieren, da die Schleife scheint nicht kündigen.

So, ist es ein Weg, um die tatsächliche Größe der chars der Zeiger zeigt auf?

  • Leider ändert sich nichts am Ergebnis. egal, ob ich s != '\0' oder *s != '\0' oder t != '\0' oder *t != '\0' landet es immer noch nicht beenden...
  • Du bist reimplementing strlen.
  • Ihre Funktion nicht verwenden s, so was ist der Punkt bei der Erhaltung der "original" Wert?
Schreibe einen Kommentar