Duda sobre Dword a char[]

Iniciado por Drewermerc, 22 Junio 2016, 02:57 AM

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

Drewermerc

Hola a todos.

Tengo una duda sobre el siguiente codigo que tengo:
Código (cpp) [Seleccionar]

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.

AlbertoBSD

Hola estas convirtiendo el entero 263977 a cadena.

"263977"

No te olvides que tambien esta el caracter nulo

"263977\0"

Necesita 7 posiciones

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Drewermerc

Hola AlbertoBSD.

Gracias por responder.
No si me acordaba de caracter nulo, lo que no recorda es que como estoy manejando char y e DWORD tengo 6 numeros entonces eso por eso necesito 7 espacion ya que cada numero ocupa un char + el caracter nulo.
Gracias por recordarme eso AlbertoBSD, es que apenas estoy volviendo a c y no me acuerdo de algunas cosas  :D.

Saludos,
Drewermerc.