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.