Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

167
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!