Declarar arreglo luego de conocer la cantidad de elementos necesarios [C].

Iniciado por NOB2014, 2 Diciembre 2016, 16:34 PM

0 Miembros y 1 Visitante están viendo este tema.

NOB2014

Hola, ¿cómo están?
Estoy haciendo algunos repasos y me encontré con este dilema y quería consultarlos, lo que desearía hacer es declarar numeroCadena luego de conocer cuantos dígitos tiene numeroEntero, por lo que tengo leído esto no es permitido en C, pero como aquí hay genios en programación, me atrevo a consultarlos. -

#include <stdio.h>
int cantidadDigitos;

int main( void ){
int  numeroEntero = 41520;
char numeroCadena[6];

cantidadDigitos = sprintf(numeroCadena, "%d", numeroEntero);

printf("\n %s tiene %d digitos \n", numeroCadena, cantidadDigitos );
return 0;
}

Saludos y desde ya muchas gracias. -

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

engel lex

lo que necesitas es redimensionar el arreglo... para ellos usas malloc o realloc

ejemplo tipico

#include <stdio.h>
#include <stdlib.h>

int main()
{
   char *str;

   // crear un array dinamicamente
   str = (char *) malloc(sizeof(char) * 16);
   strcpy(str, "memoria alojada");
   printf("String = %s,  Address = %u\n", str, str);

   // redimensionar array
   str = (char *) realloc(str, sizeof(char) * 34);
   strcat(str, " y redimensionada");
   printf("String = %s,  Address = %u\n", str, str);

   //liberar memoria
   free(str);


   //alojar nueva memoria
   str = (char *) malloc(sizeof(char) * 28);
   strcpy(str, "memoria alojada nuevamente");
   printf("String = %s,  Address = %u\n", str, str);

   //liberar memoria
   free(str);
   
   return(0);
}
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

NOB2014

Hola, engel lex. -
Con el apuro (hora de almorzar) se me olvido, había pensado en escribir que ya tenía conocimiento para hacerlo con memoria dinámica, de cualquier manera si no pusiste otra posibilidad es evidente que no existe, no obstante, recuerdo que una vez no sé si en un hilo mío o lo leí por allí habian hecho algo parecido sin memoria dinámica, con un struct pero no lo puedo encontrarlo por ningún lado. -

A continuar repasando, un saludo y gracias. -
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-