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. -
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);
}
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. -