C itérer char tableau avec un pointeur

Je suis nouveau en C et je me demandais à propos de la façon d'obtenir chaque élément d'un tableau à l'aide d'un pointeur. Ce qui est facile si et seulement si vous connaissez la taille de la matrice.
Afin de laisser le 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;
}

Maintenant, je veux déterminer la taille de text. pour ce faire, j'ai découvert que la Chaîne se termine par un '\0' caractère. J'ai donc écrit la fonction suivante:

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

    for (t = s; s != '
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;
}
'
; t++) { size++; } return size; }

Cette fonction, cependant, ne fonctionne pas tant que la boucle semble pas fin.

Alors, est-il un moyen pour obtenir la taille réelle de la chars le pointeur pointe sur?

  • Ce qui malheureusement ne change rien au résultat. n'a pas d'importance si je utiliser s != '\0' ou *s != '\0' ou t != '\0' ou *t != '\0', il finit toujours pas appelé à disparaître...
  • Vous êtes de réimplanter strlen.
  • Votre fonction n'utilise pas s, quel est donc le point dans la préservation de "l'original" de la valeur?