Tengo una duda sobre el siguiente codigo que tengo:
Código
HANDLE hStdoutConsole, hStdinConsole; DWORD written, value = 263977 , read; char message[7] = { 0 }, messageDos[10] = {0}; AllocConsole(); hStdoutConsole = GetStdHandle(STD_OUTPUT_HANDLE); if (hStdoutConsole == INVALID_HANDLE_VALUE) { MessageBox(NULL, L"stdout no disponible", L"Error", MB_OK); return 1; } hStdinConsole = GetStdHandle(STD_INPUT_HANDLE); if (hStdinConsole == INVALID_HANDLE_VALUE) { MessageBox(NULL, L"stdin no disponible", L"Error", MB_OK); } sprintf_s(message, sizeof(message), "%d", value); WriteConsoleA(hStdoutConsole, message, strlen(message), &written, NULL); ReadConsoleA(hStdinConsole, messageDos, sizeof(messageDos), &read, NULL); return 0;
Mi duda es cuando convierto DWORD a char con sprintf_s, así como esta el codigo ahorita si compila bien pero si modifico el tamaño del array message por uno menor a 7 el programa causa un error en tiempo de ejecucion y se cierra.
Entonces queria que me ayudaran aclarar la duda del poque se necesitan mas de 6 bytes si se supone que con 4 deberia de basta ya que DWORD vale 4 bytes, o no es así?
Espero que me puedan ayudar.
Saludos.
Drewermerc.