elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Direcciones de memoria
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Direcciones de memoria  (Leído 2,881 veces)
Maik33

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Direcciones de memoria
« en: 17 Octubre 2012, 14:31 pm »

Hola, tengo un problema con las direcciones de memoria en C. Tengo que guardar en un fichero varias direcciones de memoria, de enteros por ejemplo. Esto no me produce ningun problema. El problema lo tengo al intentar leerlos.

Este es el codigo de prueba:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(){
  5.  int n;
  6.  int *p;
  7.  FILE *f;
  8.  n=10;
  9.  f=fopen("mem.txt","w");
  10.  fprintf(f,"%x",&n);
  11.  fclose(f);
  12.  f=fopen("mem.txt","r");
  13.  fscanf(f,"%x",p);
  14.  fclose(f);
  15. }

compila bien pero al ejecutar me da violacion del segmento.

Tambien he intentado los mismo pero con arrays de char, y el mismo problema:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(){
  5.  int n;
  6.  char mem[20];
  7.  int *p;
  8.  n=10;
  9.  sfprintf(mem,"%x",&n);
  10.  sscanf(mem,"%x",p);
  11. }

Alguien sabe que hago mal, o como se hace?
He buscado en google pero todo lo que encontre es teoria sobre punteros que ya se (creo).
Gracias.


En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Direcciones de memoria
« Respuesta #1 en: 17 Octubre 2012, 14:35 pm »

c+especificadores+formato y busca por puntero o direccion de memoria, veras que el que se usa no es %x.

si despues de esto te sigue fallando comentalo y probaremos otra cosa.

un saludo!


En línea

Maik33

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Re: Direcciones de memoria
« Respuesta #2 en: 17 Octubre 2012, 14:40 pm »

Ya habia probado esa manera

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(){
  5.  int n;
  6.  char mem[20];
  7.  int *p;
  8.  FILE *f;
  9.  n=10;
  10.  f=fopen("mem.txt","w");
  11.  fprintf(f,"%p",&n);
  12.  fclose(f);
  13.  f=fopen("mem.txt","r");
  14.  fscanf(f,"%p",p);
  15.  fclose(f);
  16. }

pero lo mismo, violacion del segmento.
En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Direcciones de memoria
« Respuesta #3 en: 17 Octubre 2012, 14:45 pm »

prueba asi:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(){
  5.  
  6. int n, *p;
  7. FILE *f;
  8.  
  9. n=10;
  10. f=fopen("mem.txt","w");
  11. fprintf(f,"%p",&n);
  12. fclose(f);
  13.  
  14. f=fopen("mem.txt","r");
  15. fscanf(f,"%p",&p); // aqui te faltaba el &
  16. fclose(f);
  17. printf("%d\n", *p); // aqui se imprime el numero 10
  18.  
  19. return 0;
  20. }

un saludo!
En línea

Maik33

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Re: Direcciones de memoria
« Respuesta #4 en: 17 Octubre 2012, 14:48 pm »

Gracias, ahora si.
Que fallo mas tonto.
Gracias por todo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines