Ayuda format string

Iniciado por dRak0, 31 Julio 2013, 13:16 PM

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

dRak0

Tengo el siguiente codigo:

#include <stdio.h>

int main()
{
char hola[]="AAAA";
printf(hola);
}



Bueno , segun entendi , si no lo especificamos de la manera printf("%s",hola) , podriamos pedir direcciones de memoria q estan en la pila hasta llegar a la de nuestra variable , de esta forma

#include <stdio.h>

int main()
{
char hola[]="AAAA %p %p %p %p %p";
printf(hola);
}


Esto nos va a dar 5 direcciones de memoria  , si no encontramos 0x41414141(AAAA) seguimos poniendo mas %p , hasta encontrarlas.
Hasta ahi todo bien. Encuentro 0x41414141 .Despues de ahi nose q mas hacer.
Duda :
No entiendo , cambio el valor de una direccion en memoria o estoy metiendo la direccion de memoria(Supongo q es la ultima).


cpu2

Cita de: jednak en 31 Julio 2013, 13:16 PMDuda :
No entiendo , cambio el valor de una direccion en memoria o estoy metiendo la direccion de memoria(Supongo q es la ultima).

Estas reservando espacio en la pila, luego copiando la direccion de 0x41414141 en ese espacio que reservaste.

Ejemplo:

Código (asm) [Seleccionar]
pushq $0x6001e0   ; direccion de 0x41414141
addb $0x2, (%rsp)
popq %rdi


Dejaria apuntando a 0x4141 en rdi.

La verdad no entendi muy bien tu duda, si no es eso reformula de nuevo la pregunta.

Un saludo.