El primer argumento de sprintf
debe apuntar a un tampón válido. Tienes un char*
pero apunta a la basura.
cambiar el código para:
char numString[80] = { };
int charcheck = sprintf(numString, "%d", numCheck);
Para que numString
realidad apunta a un tampón válido (de 80 caracteres en este ejemplo, todos los elementos de los cuales se inicializan a 0).
También sería bueno utilizar snprintf
para que pueda pasar el tamaño de la memoria intermedia a la misma, lo que ayudará a evitar desbordamientos de búfer:
const int bufsize = 80;
char numString[bufsize] = { };
int charcheck = snprintf(numString, bufsize - 1, "%d", numCheck);
en cuenta que se resta uno del tamaño del búfer que se pasa a snprintf
porque no desea que use la última ranura, que quiere asegurarse de que sea NULL
para indicar el final de la cadena.
¿Por qué funciona exactamente cuando no recopilo los resultados? – syl
Es un comportamiento indefinido. A veces, el comportamiento indefinido se comporta exactamente como lo espera, lo que podría decirse que es el peor de los casos. –
¿Por qué recomiendas 'snprintf' sobre' sprintf'? – Kevin