es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Iterar sobre una matriz de direcciones de cadenas.

Hola, estoy intentando iterar a través de todo el array de direcciones a cadenas, aquí está lo que tengo hasta ahora:

“`c++
int main()
{

char arr1[]="hello";
char arr2[]="ok";
char arr3[]="goodbye";
char arr4[] ="memo";

char *sumOfAdresses[]={arr1,arr2,arr3,arr4};

for(char**r=sumOfAdresses;*r!='\0';r++){
printf("fadixa");
printf("\n");
}

}
“`

En este caso, estoy intentando imprimir “fadixa” 4 veces, pero este método no parece funcionar. No puedo poner el tamaño del array como parte de la asignación, esto es solo la mitad de mi tarea y es solo una prueba en el main (esto debería ser un método que acepta solo **char y sin tamaño).

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece haber un par de errores en el código proporcionado.

    En primer lugar, los arreglos deberían declararse como arreglos de caracteres en lugar de punteros a caracteres:

    char arr1[] = "hello";
    char arr2[] = "ok";
    char arr3[] = "goodbye";
    char arr4[] = "memo";
    

    En segundo lugar, la condición del bucle debería verificar el final del arreglo utilizando el tamaño del arreglo, en lugar de verificar un terminador nulo:

    for (char** r = sumOfAdresses; r < sumOfAdresses + sizeof(sumOfAdresses)/sizeof(char*); r++) {
        printf("fadixa\n");
    }
    

    Este código itera sobre el arreglo sumOfAdresses utilizando aritmética de punteros para determinar el tamaño del arreglo (sizeof(sumOfAdresses)/sizeof(char*)) y verifica que el puntero r sea menor que la dirección del último elemento del arreglo (r < sumOfAdresses + sizeof(sumOfAdresses)/sizeof(char*)).

    Con estos cambios, el bucle debería imprimir “fadixa” cuatro veces.

Comments are closed.