Saltar al contenido

Añadir elemento a un array de cadenas en C

Nuestro grupo de expertos luego de días de investigación y recopilar de información, dimos con los datos necesarios, nuestro deseo es que te sea útil para tu proyecto.

Solución:

Si el array declarado como

char A[10];

entonces puedes asignar string “vincular” a él de la siguiente manera

#include 

//...

strcpy( A, "bond" );

Si desea agregar el array con algún otro string entonces puedes escribir

#include 

//...

strcpy( A, "bond" );
strcat( A, " john" );

No puede agregar a un array. Cuando defines el array variable, C le pide al is que tenga suficiente memoria contigua. Esa es toda la memoria que tienes. Puede modificar los elementos del array (A[10]=5) pero no el tamaño.

Sin embargo, PUEDE crear estructuras de datos que permitan anexar. Los dos más comunes son las listas vinculadas y las matrices dinámicas. Tenga en cuenta que estos no están integrados en el lenguaje. Tienes que implementarlos tú mismo o usar una biblioteca. Las listas y matrices de Python, Ruby y JavaScript se implementan como matrices dinámicas.

LearnCThHardWay tiene un tutorial bastante bueno sobre listas enlazadas, aunque el de matrices dinámicas es un poco tosco.

Hola,

Realmente depende de lo que entiendas por añadir.

...
int tab[5]; // Your tab, with given size
// Fill the tab, however suits you.
// You then realize at some point you needed more room in the array
tab[6] = 5; // You CAN'T do that, obviously. Memory is not allocated.

El problema aquí puede ser dos cosas:

  • ¿Calculaste mal el tamaño que necesitas? En ese caso, solo asegúrese de que este tamaño dado que mencionó esté correctamente ‘dado’, como quiera que sea.
  • ¿O no sabes cuánto espacio quieres al principio? En ese caso, ¡tendrá que asignar la memoria usted mismo! No hay otra forma de cambiar el tamaño de un fragmento de memoria sobre la marchasi se me permite decir.

#include #include #include #define STR_MAX_SIZE 255                                // Maximum size for a string. Completely arbitray.
char *new_string(char *str) char *ret; // The future new string;
ret = (char *) malloc(sizeof(char) * 255); // Allocate the string strcpy(ret, str); // Function from the C string.h standard library return (ret);
int main() char *strings[STR_MAX_SIZE]; // Your array char in[255]; // The current buffer int i = 0, j = 0; // iterators
while (in[0] != 'q') printf("Hi ! Enter smth :n"); scanf("%s", in); strings[i] = new_string(in); // Creation of the new string, with call to malloc i++; for ( ; j < i ; j++) printf("Tab[ %d ] :t%sn", j, strings[j]); // Display free(strings[j]); // Memory released. Important, your program // should free every bit it malloc's before exiting
return (0);

Esta es la solución más fácil que se me ocurrió. Probablemente no sea lo mejor, pero solo quería mostrarte todo el proceso. Podría haber usado la biblioteca estándar de C strdup(char *str) función para crear una nueva stringy podría haber implementado mi propia lista rápida o array.

Reseñas y valoraciones del post

Nos puedes añadir valor a nuestra información colaborando tu experiencia en los informes.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *