Requisito previo: ¿Cómo asignar dinámicamente una array 2D en C?
Puntero doble: un puntero que apunta a otro puntero se conoce como puntero doble. Para representar el doble puntero se utiliza ‘ ** ‘. El puntero doble también se denomina puntero a puntero.
Ejemplo:
Input: Geeks, Gfg, Placement, Sudo, Gate Output: Gate, Geeks, Gfg, Placement, Sudo
La idea es asignar dinámicamente memoria y valores a las strings en forma de array 2-D. A continuación, aplique la ordenación por burbuja utilizando las funciones strcmp y strcpy .
A continuación se muestra la implementación requerida:
// C program to sort an array of strings #include <stdio.h> #include <stdlib.h> #include <string.h> // Function to sort the values void sort(char** names, int n) { int i, j; // Perform sort operation using bubble sort for (i = 0; i < n - 1; i++) for (j = 0; j < n - i - 1; j++) if (strcmp(names[j], names[j + 1]) > 0) { char* temp; temp = (char*)calloc(30, sizeof(char)); strcpy(temp, names[j]); strcpy(names[j], names[j + 1]); strcpy(names[j + 1], temp); } } // Driver code int main() { char** names; int n, i; printf("Enter the number of names to be printed: "); scanf("%d\n", &n); // allocating memory for 1st dimension names = (char**)calloc(n, sizeof(char*)); for (i = 0; i < n; i++) // allocating memory for 2nd dimension { names[i] = (char*)calloc(30, sizeof(char)); scanf("%s", names[i]); } sort(names, n); printf("\nArray after sorting:\n"); for (i = 0; i < n; i++) printf("%s\n", names[i]); return 0; }
Producción: