Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Drewermerc en 22 Junio 2016, 02:57 am



Título: Duda sobre Dword a char[]
Publicado por: Drewermerc en 22 Junio 2016, 02:57 am
Hola a todos.

Tengo una duda sobre el siguiente codigo que tengo:
Código
  1. HANDLE hStdoutConsole, hStdinConsole;
  2. DWORD written, value = 263977 , read;
  3. char message[7] = { 0 }, messageDos[10] = {0};
  4.  
  5. AllocConsole();
  6. hStdoutConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  7.  
  8. if (hStdoutConsole == INVALID_HANDLE_VALUE) {
  9. MessageBox(NULL, L"stdout no disponible", L"Error", MB_OK);
  10. return 1;
  11. }
  12.  
  13. hStdinConsole = GetStdHandle(STD_INPUT_HANDLE);
  14. if (hStdinConsole == INVALID_HANDLE_VALUE) {
  15. MessageBox(NULL, L"stdin no disponible", L"Error", MB_OK);
  16. }
  17.  
  18. sprintf_s(message, sizeof(message), "%d", value);
  19. WriteConsoleA(hStdoutConsole, message, strlen(message), &written, NULL);
  20. ReadConsoleA(hStdinConsole, messageDos, sizeof(messageDos), &read, NULL);
  21. return 0;
  22.  

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.


Título: Re: Duda sobre Dword a char[]
Publicado por: AlbertoBSD en 22 Junio 2016, 03:31 am
Hola estas convirtiendo el entero 263977 a cadena.

Código:
"263977"

No te olvides que tambien esta el caracter nulo

Código:
"263977\0"

Necesita 7 posiciones

Saludos


Título: Re: Duda sobre Dword a char[]
Publicado por: Drewermerc en 22 Junio 2016, 16:09 pm
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.