Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

164
Vistas
Pasar matriz de cadenas a funciones C

Actualmente estoy confundido sobre cómo puedo pasar una matriz de cadenas a una función. He creado una matriz unidimensional. El método que he hecho funciona, pero parece redundante y creo que hay una mejor manera de hacerlo, pero no estoy seguro de cómo hacerlo. Estoy tratando de encontrar una manera en la que pueda pasar los 4 elementos a la función al mismo tiempo.

Aquí está la muestra de mi código.

 #include <stdio.h> #include <string.h> #include <ctype.h> void sort(char *,char *,char *, char *);//Function prototype int main() { char *string_database[4]={'\0'}; string_database[0]="Florida"; string_database[1]="Oregon"; string_database[2]="California"; string_database[3]="Georgia"; sort(string_database[0],string_database[1],string_database[2],string_database[3]); return 0; } void sort(char *string1, char *string2, char *string3, char *string4) { printf("The string is= %s\n",string1); printf("The string is= %s\n",string2); printf("The string is= %s\n",string3); printf("The string is= %s\n\n\n",string4); }

Gracias de antemano, agradezco cualquier respuesta a mi problema.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puedes hacerlo así:

 void sort(char **, int); int main() { char *string_database[5]={'\0'}; string_database[0]="Florida"; string_database[1]="Oregon"; string_database[2]="California"; string_database[3]="Georgia"; sort(string_database, 4); return 0; } void sort(char **str, int n) { int i = 0; for (i = 0; i < n; i++) printf("The string is= %s\n",str[i]); }
over 4 years ago · Santiago Trujillo Denunciar

0

#include <stdio.h> #include <string.h> #include <ctype.h> void sort(char *strings[], int n);//Function prototype int main() { char *string_database[4]={'\0'}; string_database[0]="Florida"; string_database[1]="Oregon"; string_database[2]="California"; string_database[3]="Georgia"; sort(string_database, 4); return 0; } void sort(char *strings[], int n) { int i; for (i=0; i<n; i++) { printf("String %d: %s\n", i, strings[i]); } }

Por lo general, pasa la longitud de la matriz junto con la propia matriz. Sin embargo, char *strings[] es realmente azúcar sintáctico, por lo que si desea mantener el prototipo de función sin nombres de parámetros, también puede usar char **strings , de modo que el código podría ser así:

 #include <stdio.h> #include <string.h> #include <ctype.h> void sort(char **, int);//Function prototype int main() { char *string_database[4]={'\0'}; string_database[0]="Florida"; string_database[1]="Oregon"; string_database[2]="California"; string_database[3]="Georgia"; sort(string_database, 4); return 0; } void sort(char **strings, int n) { int i; for (i=0; i<n; i++) { printf("String %d: %s\n", i, strings[i]); } }

Además, como Jite señala a continuación, el uso de una sintaxis como char *strings[] podría engañarlo a usted o a otro lector del código haciéndoles pensar que están tratando con una matriz estática, mientras que esto no es cierto; por lo tanto, debe optar por la sintaxis char **strings más sencilla.

over 4 years ago · Santiago Trujillo Denunciar

0

después de leer toda la respuesta dada a su pregunta. Me gustaría decirte una cosa más. también puede imprimir sus cadenas, carácter por carácter.

 void sort(char **, int); int main() { char *string_database[5]={'\0'}; string_database[0]="Florida"; string_database[1]="Oregon"; string_database[2]="California"; string_database[3]="Georgia"; sort(string_database, 4); return 0; } void sort(char **str, int n) { int i = 0; for (i = 0; i < n; i++) { for (int j=0;str[i][j]!='\0';j++) { printf("%c",str[i][j]); } printf("\n"); } }

como str es un puntero doble, podemos usar dos subíndices sin ningún problema para llegar a los caracteres.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda