¿Cómo puedo recorrer este doble puntero sin saber su tamaño?
char *arr[] = {"ant", "bat", "cat", "dog", "egg", "fly"}; char **ptr = arr; // Double pointerIntenté esto pero me sale un error
while (*ptr){ printf("%s\n",*ptr); ptr+=1; }No quiero algo similar a esto pero con doble puntero.
char *word = *ptr; for (int i = 0; *(word + i) != '\0'; i++) { printf("%c", *(word + i)); }La razón por la que puede determinar el final de una cadena con \0 es porque cuando asigna uno a un puntero, se coloca automáticamente un byte nulo al final, tenga en cuenta que la definición de cadena es una matriz de caracteres terminada en nulo. Puede imitar este comportamiento en una matriz de cadenas agregando un elemento NULL al final:
char *arr[] = {"ant", "bat", "cat", "dog", "egg", "fly", NULL}; char **ptr = arr; // Double pointer while (*ptr) { printf("%s\n", *ptr); ptr += 1; }Esto es lo que se llama un centinela.